我使用的是wordpress。我用jQuery进行了一个ajax调用,PHP回显了一个JSON对象,但我在javascript中得到的响应在末尾添加了一个"0",这使得解码JSON对象失败。
PHP:
function newspaper_getpost() {
$d = array('foo' => 'bar', 'baz' => 'long');
echo json_encode($d);
}
add_action('wp_ajax_newspaper_getpost', 'newspaper_getpost');
JS:
$.post(MyAjax.ajaxurl,{
action : 'newspaper_getpost',
postID : $(this).val()
}, function(response) {
console.log(response);
});
输出:
{"foo":"bar","baz":"long"}0
我试过
echo substr( json_encode($d), 0, -1);
得到
{"foo":"bar","baz":"long"0
所以我确信这不是PHP方面的问题。我可以在回应的末尾加上"0",但我觉得有更大的事情在发生,我不想做一个廉价的破解来让它发挥作用。JQuery 1.6.1顺便说一句,谢谢!
很明显,有一个0与这个javascript片段完全无关。您可以看到,您剪掉了响应的最后一个字符,它删除了}
,但保留了0。您需要查看PHP/HTML的其余部分,因为输出的某个地方有一个杂散字符。
如果要添加exit();就在回声之后,你会看到0消失了。
试试这个
function newspaper_getpost() {
$d = array('foo' => 'bar', 'baz' => 'long');
die(json_encode($d));
}
add_action('wp_ajax_newspaper_getpost', 'newspaper_getpost');
这意味着add_action('wp_ajax_newspaper_getpost', 'newspaper_getpost');
php代码后面/里面有一些东西在回响。查找print_r()、echo或类似的内容。