尝试通过ajax请求获取json数据,但始终会收到此错误:
Uncaught SyntaxError Unexpected Number
这是我的js代码:
var ajaxurl = '<?php echo admin_url('admin-ajax.php'); ?>';
$.ajax({
url: ajaxurl,
type: 'POST',
dataType: 'json',
data: { action : 'getPills' },
success: function(data){
product = JSON.parse(data);
console.log(product);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
这是我的php代码:
add_action('wp_ajax_getPills', 'getPills');
add_action('wp_ajax_nopriv_getPills', 'getPills');
function getPills(){
$data = array(
"test" => 'test'
);
error_log(json_encode($data), 0);
echo json_encode($data);
}
调用error_log来查看我尝试接收的json数据:
{"test":"test"}
之前我在其他项目中使用了ajxa + json,这一切都很好。我不知道如何解决它:(
答案 0 :(得分:5)
找到了解决方案。
我需要在AJAX处理函数的末尾添加die()
以防止进一步的内容。 Wordpress在回复结束时添加了0
。像这样:
{"test":"test"}0
所以在AJAX处理函数结束时die()修复了问题
答案 1 :(得分:3)
通过指定dataType: 'json',
,传递给success函数的数据已经被反序列化为一个对象,因此不要在其上调用JSON.parse
success: function(data){
console.log(data);
},
虽然这应该会给您一个错误,例如SyntaxError: Unexpected token o
而不是Uncaught SyntaxError Unexpected Number
。您应该检查开发人员工具以确切了解服务器返回的内容。