Ajax响应中的流浪角色?

bea*_*eek 5 php ajax wordpress jquery json

我正在使用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');
Run Code Online (Sandbox Code Playgroud)

JS:

  $.post(MyAjax.ajaxurl,{
        action : 'newspaper_getpost',
        postID : $(this).val()
        }, function(response) {
              console.log(response);
  });
Run Code Online (Sandbox Code Playgroud)

输出:

{"foo":"bar","baz":"long"}0
Run Code Online (Sandbox Code Playgroud)

我试过了

echo substr( json_encode($d), 0, -1);
Run Code Online (Sandbox Code Playgroud)

得到了

{"foo":"bar","baz":"long"0
Run Code Online (Sandbox Code Playgroud)

所以我确定它不是PHP方面.我可以在响应结束时删除"0",但我觉得更大的事情正在发生,我不想做一个廉价的黑客来使它工作.JQuery 1.6.1顺便说一下.谢谢!

Fos*_*sco 4

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

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