Ajax响应中的流浪角色?

时间:2011-05-27 17:02:21

标签: php jquery ajax json wordpress

我正在使用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顺便说一下。谢谢!

3 个答案:

答案 0 :(得分:4)

显然有一个与这个javascript片段完全无关的0。你可以看到你从响应中删除了最后一个字符并删除了}但是0仍然存在。你需要查看PHP / HTML的其余部分,因为在某处输出了一个杂散字符。

如果要添加exit();在回声之后,你会看到0消失。

答案 1 :(得分:0)

试试这个

function newspaper_getpost() {
    $d = array('foo' => 'bar', 'baz' => 'long');
    die(json_encode($d));
}
add_action('wp_ajax_newspaper_getpost', 'newspaper_getpost');

答案 2 :(得分:0)

这意味着在add_action('wp_ajax_newspaper_getpost', 'newspaper_getpost'); php代码之后/内部有回音。寻找print_r(),echo或类似的东西。