ajax - WordPress 前端 AJAX 表单提交给出 500 内部服务器错误

标签 ajax database wordpress forms plugins

我正在创建一个具有前端表单的自定义 wordpress 插件,我希望使用 AJAX 将数据发送到数据库并返回响应以更新前端表。

一切看起来都很好,直到我点击“提交”按钮

所以我的 AJAX 是:

$('#form').submit(function(event) {

    var formData = {
        'user'              : $('input[name=userid]').val(),
        'cardname'             : $('input[name=card]').val(),
        'setname'             : $('input[name=setname]').val(),
        'quantity'    : $('input[name=quantity]').val(),
        'multiverseid'    : $('input[name=multiverseid]').val()
    };

    // process the form
    $.ajax({
        type        : 'POST', // define the type of HTTP verb we want to use (POST for our form)
        url         : ''+base_url+'/website/wp-content/plugins/test/public/js/process.php', // the url where we want to POST
        data        : formData, // our data object
        dataType    : 'html', // what type of data do we expect back from the server
        encode          : true,
        success : function(updatedTable) {
            $('div#tableHolder').html(updatedTable);
        }
    })

       });

 // stop the form from submitting the normal way and refreshing the page
    event.preventDefault();

   });
});

将添加数据的 process.php 文件是:

global $wpdb;

$wpdb->insert( 
'wp_mycards', 
array( 
    'user' => $_POST[userid], 
    'cardname' => $_POST[cardname],
     'setname' => $_POST[setname],
     'quantity' => $_POST[quantity],
     'multiverseid' => $_POST[multiverseid] 

     )
 );



$data="<table><tr><td>Image</td><td>Name</td><td>Set</td><td>Quantity</td></tr>";

$user_ID = get_current_user_id();
$cards = $wpdb->get_row( "SELECT * FROM $wpdb->wp_mycards WHERE user = ".$user_ID."" );

while ($row = mysql_fetch_assoc($cards)) { 

    $data.='<tr><td align="center"><img src="http://gatherer.wizards.com/Handlers/Image.ashx?multiverseid='.$row[multiverseid].'&type=card" width="30" height="42" /></td><td align="left">'.$row[cardname].'</td><td align="center">'.$row[setname].'</td><td align="center">'.$row[quantity].'</td></tr>';

  }

 $data.="</table>";

 echo $data;

-我在 firefox 和 firebug 上运行它,它给了我 500 个内部服务器错误-发布值很好

最佳答案

AJAX 在 WordPress 中有点不同。就像在后端使用 AJAX 一样,WordPress 已经准备好使用 ajax,您只需要使用正确的功能即可。

在 WordPress 中,每个 AJAX 请求都会通过 wp-admin 文件夹中的 admin-ajax.php 文件,您需要执行一些操作才能连接到它。 AJAX 请求 URL 应指向此文件。在此处阅读有关如何操作的完整教程:https://premium.wpmudev.org/blog/using-ajax-with-wordpress/

乍一看可能有点复杂,拿到手后购买并不难。您将需要这些功能:

wp_ajax_my_action

wp_ajax_nopriv_my_action

wp_localize_script

关于ajax - WordPress 前端 AJAX 表单提交给出 500 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33127176/

相关文章:

java - 将变量存储到我的服务器

html - 如何创建一个随机的自动重定向 url?

python - python/django fork 后的 SSL 错误

java - 如何从滚动数据库中获取数据?

wordpress - WooCommerce 产品网格(重新排列产品详细信息)

php - WordPress 表单上所需的警报

javascript - withCredentials 和通配符 * - 'Access-Control-Allow-Origin' header 问题

javascript - 当我到达某个 div 时,scrollTop 不起作用

javascript - 当用户提交 PHP 表单时,如何将文本文件发送到网站上所有打开的浏览器

php - 类与插件框架冲突 - PHP/Wordpress