我尝试了一些我在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;
}
我知道这是一个常见问题,但我仍然不明白为什么我的代码在成功响应中仍然返回零。 提前致谢
答案 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();
}