在函数中。php我有:
function testajax() {
echo "test";
exit;
}
add_action(\'wp_ajax_testthisajax\', \'testajax\');
add_action(\'wp_ajax_nopriv_testthisajax\', \'testajax\');
在脚本中。js我有:
$("#thisformsid").submit( function() {
$.ajax({
url: CustomAjax.ajaxurl,
type: "POST",
data: {
action: \'testthisajax\'
},
success: function(result){
console.log(\'success: \', result);
},
error: function(xhr){
console.log(xhr.status);
},
complete: function(result){
console.log(\'complete: \', result);
}
})
});
我的表单使用了正确的id,我可以在脚本中访问ajax提交。js文件
url在脚本中定义。js类:
var CustomAjax = {
ajaxurl: "/wp-admin/admin-ajax.php"
};
然而,这失败了。在控制台中,我看到一个错误和返回的值“0”。你知道为什么这行不通吗?这似乎是基本的,不应该出错,但我看不出问题所在。有什么想法吗?
<小时>Update:在控制台中,我看到错误标记在我安装的jquery的第18行(它被缩小了,所以我不知道那一行实际是什么)?为什么jquery会出现问题?
SO网友:Chris_O
尝试使用定义CustomAjax urladmin_url( \'admin-ajax.php\' )
<?php print("var CustomAjax = \'" . admin_url( \'admin-ajax.php\' ) . "\';\\n");?>
更好的方法是使用wp\\u localize\\u脚本传递AjaxUrl:
wp_enqueue_script( \'scripts\', get_bloginfo( \'stylesheet_directory\' ) . \'/js/scripts.js\', array( \'jquery\', \'jquery-ui\' ), false);
wp_localize_script( \'scripts\', \'CustomAjax\', array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) ) );