我正在创建一个具有前端表单的自定义 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/
乍一看可能有点复杂,拿到手后购买并不难。您将需要这些功能:
关于ajax - WordPress 前端 AJAX 表单提交给出 500 内部服务器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33127176/