Wordpress Ajax成功总是返回0

时间:2016-02-17 09:59:54

标签: php jquery ajax wordpress

我尝试了一些我在google中找到的解决方案,比如在功能结束时添加die()等,但都没有。

这是我的ajax脚本文件

                            jQuery(document).ready(function(){
                                var ajaxurl = '{$siteurl}';
                                jQuery.ajax({
                                    type: 'POST', 
                                    url: ajaxurl, 
                                    data: {'action': 'add_to_cart', 'file_id':23},
                                    success: function(data){ 
                                        console.log('success'+data);
                                    },
                                    error: function(xhr, textStatus, errorThrown){
                                        console.log('error');
                                    }
                                });
                            });

这是我的功能

add_action('wp_ajax_add_to_cart', 'add_to_cart');
add_action('wp_ajax_nopriv_add_to_cart', 'add_to_cart');

function add_to_cart(){
    $name = $_POST['file_id'];
    global $wpdb;
    $wpdb->insert(
        'rtl21016_custom_cart',
        array(
            'user_id' => 1
        )
    );
    die();
    return true;
}

我知道这是一个常见问题,但我仍然不明白为什么我的代码在成功响应中仍然返回零。 提前致谢

2 个答案:

答案 0 :(得分:1)

AJAX将返回页面上打印的所有内容,因此返回后不会为您执行此操作。试试这个:

add_action('wp_ajax_add_to_cart', 'add_to_cart');
add_action('wp_ajax_nopriv_add_to_cart', 'add_to_cart');

function add_to_cart(){
    $name = $_POST['file_id'];
    global $wpdb;
    $wpdb->insert(
        'rtl21016_custom_cart',
        array(
            'user_id' => 1
        )
    );
    echo true;
    die();
}

答案 1 :(得分:1)

在你的“add_to_cart”函数中,你在返回函数之前使用了die()函数,为什么它在响应中返回false,使用下面给出的脚本:

function add_to_cart(){
    $name = $_POST['file_id'];
    global $wpdb;
    $wpdb->insert(
        'rtl21016_custom_cart',
        array(
            'user_id' => 1
        )
    );

    echo true;
  die();
}