problem with Wordpress ajax

时间:2016-12-16 作者:Dina

我在wordpress中使用ajax。以下是我的ajax代码:

var name = "Toto";
$.ajax({
        url : ajaxurl,
        type : \'post\',
        data : {
            \'action\' : \'test_action\',
            \'data\' : {
                \'name\' : name,
            }
        },
        success : function(response){
            alert(response);
        },
        error : function(){
            alert(\'error\');
        }
    });
我的PHP代码

add_action("wp_ajax_test_action", "_test_function");
function _test_function(){
    wp_localize_script( \'edit-taxonomy\' , \'ajax_object\' , array(\'ajaxurl\' => admin_url(\'admin-ajax.php\')));
    die(\'success\');
}
然后我在浏览器上检查了它,我得到:

enter image description here

我收到一个值为“0”的警报(就像我在成功案例中所做的那样)。然后我意识到_test_function 函数(它应该返回“success”)。我认为这是端口问题,因为对于其他类似的代码,端口值是80,它可以工作,但我不明白为什么它使用另一个端口,以及如何修复它。

1 个回复
最合适的回答,由SO网友:cybmeta 整理而成

通常,当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脚本中。您可以访问的jsajax_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\');
        }
});

相关推荐

尝试在WordPress中实现AJAX注释,遇到WP错误

我试图在WordPress中为我的评论实现Ajax,使用this tutorial. 但我在将教程中的代码集成到自己的预构建主题时遇到了问题。问题是,我要么得到一个WP错误“检测到重复注释;看来你已经说过了!”或标准500错误。以下是我得到的:下面是我对ajax的评论。js文件如下所示: * Let\'s begin with validation functions */ jQuery.extend(jQuery.fn, { /* * check i