wp_ajax返回0我的错误是什么?

时间:2015-04-30 19:07:42

标签: jquery ajax json wordpress

这是我的功能

function multi_delete(){

    echo ':D';

    die();
}

我的添加行为

add_action('wp_ajax_multi_delete','multi_delete');

和js代码

jQuery('#ckta_products_admin').submit(function(e) {
    e.preventDefault();

    jQuery.ajax({
        type:           "POST",
        url:            '/admin-ajax.php?action=multi_delete',
        data:           jQuery(this).serialize(),
        dataType:       "json",
        success:        function(data){if(data==1){
            location.reload(true);
        }}
    });

});

回复是" 0 "。我不需要管理员和nopriv。其他ajax调用工作但不是这个。谁知道我做错了什么?

3 个答案:

答案 0 :(得分:1)

您已将数据类型设置为" json",但您仍然返回非json字符串,因此当jQuery尝试反序列化它时,它可能会失败并且将其设置为" null"。也许尝试使用一些有效的JSON:

function multi_delete(){

    echo '{"test": ":D"}';

    die();
}

答案 1 :(得分:1)

使用正确的json格式。

function multi_delete(){

    echo json_encode(array(
      'success' => true
    ));

    die();
}
jQuery('#ckta_products_admin').submit(function(e) {
    e.preventDefault();

    jQuery.ajax({
        type:           "POST",
        url:            '/admin-ajax.php?action=multi_delete',
        data:           jQuery(this).serialize(),
        dataType:       "json",
        success:        function(data){
          if(data.success){
            location.reload(true);
          }
        }
    });

});

答案 2 :(得分:0)

你把你的

add_action('wp_ajax_multi_delete','multi_delete');

在插件主文件或WordPress主题functions.php文件中?