调用json_encode会在输出缓冲区中放入无关的“+”

时间:2011-12-07 13:43:29

标签: php ajax wordpress-plugin json

最近我的WordPress插件在AJAX调用中的DEV环境(在两个不同的盒子上)开始失败。我看到的是,当我打电话时:

$t = json_encode(<some array>);

将一个无关的+字符插入到输出缓冲区中。我通过查看ob_get_content()电话的结果来观察到这一点。 $t显示正确的JSON结果,而<some array>的内容似乎并不重要。

我确定它本身并不是PHP问题,因为它似乎只发生在WordPress的上下文中。

我将它分离到我的插件中的以下函数:

function my_action_callback() {
    $a = array("a" => "orange", "b" => "banana", "c" => "apple");
    echo json_encode($a);
    die(); // this is required to return a proper result
}

my_action_callback是一个注册由WordPress在AJAX调用上调用的回调函数。我可以将json_encode的结果分配给变量而不是回显,结果很好,但是在那一点检查输出缓冲区会显示已插入一个+

不幸的是,我不确定我在我的环境中做了什么改变就开始了这种行为,因为我等了很长时间来调试它。我不知道从哪里开始。

环境是运行Wordpress 3.2.1的PHP 5.3.5

为什么调用json_encode会在输出缓冲区中放入ANYTHING,因为我没有回应结果?

1 个答案:

答案 0 :(得分:1)

从干净的PHP环境开始,写入并查看是否打印了+。如果是这样,那就是PHP错误。

摆脱上面的代码,输入你的代码,看它是否打印+。如果是这样,那么它就是您代码中的错误。

开始重新修改PHP环境。测试,每次更改后,它会打印+。当它发生时,你就找到了罪魁祸首。

如果,最后,你仍然无法看到+,那么它就是魔法。 ; - )

带回家的教训:永远不要让臭虫徘徊太久。