【发布时间】:2011-09-03 13:42:10
【问题描述】:
我正在使用 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 顺便说一句。谢谢!
【问题讨论】:
-
您使用的是最新版本的 jQuery,还是 minor-major 版本?编辑:尝试直接在 Chrome Inspector 或 Firebug 上调试响应,看看您是从 PHP 收到它还是 JS 问题。
-
残留的
0会破坏您的代码吗?如果没有,我就别管它了。这可能是浏览器的怪癖。 -
看起来错误来自 add_action() 之后的某些内容。此外,请确保您通过在 post 函数中完成 type 参数来告诉 $.post 它将接收 json。
标签: php jquery ajax json wordpress