通常,当ajax调用usgin admin ajax时。php返回零表示请求数据中未设置动作,或者找不到动作回调。
在您的情况下,似乎找不到操作回调。
在前端执行ajax调用时,需要使用操作wp_ajax_nopriv_{action}
而不是wp_ajax_{action}
:
// For admin side
add_action("wp_ajax_test_action", "_test_function");
// For frontend side
add_action("wp_ajax_nopriv_test_action", "_test_function");
function _test_function(){
die( \'success\' );
}
此外,在ajax动作回调中本地化脚本并没有多大意义,您需要在其他地方进行,通常是在
wp_enqueue_scripts
措施:
add_action( \'wp_enqueue_scripts\', \'cyb_enqueue_scripts\' );
function cyb_enqueue_scripts() {
// First, enqueue you ajax script
wp_enqueue_script( \'my-script\', plugins_url( \'assets/js/mi-ajax-script.js\', __FILE__ ) );
// Second localize the script to pass variables
wp_localize_script(
\'my-script\' , // handle of the script to be localized
\'ajax_object\' ,
array( \'ajaxurl\' => admin_url( \'admin-ajax.php\' ) )
);
}
然后,在我的ajax脚本中。您可以访问的js
ajax_object
创建时间
wp_localize_script()
:
var name = "Toto";
$.ajax({
url : ajax_object.ajaxurl,
type : \'post\',
data : {
\'action\' : \'test_action\',
\'data\' : {
\'name\' : name,
}
},
success : function(response){
alert(response);
},
error : function(){
alert(\'error\');
}
});