0

我通常通过搜索找到我的答案,但这让我很困惑,我找不到任何相关文章:/

我只是对我的 PHP 脚本运行 AJAX 调用并警告返回值(JSON 编码对象)。

问题是,脚本一碰到我的“回声”语句就会冻结。我已经在没有回声的情况下进行了测试,甚至使用了诸如“Hello”之类的值(两者都成功)。我还使用我在网上找到的示例 JSON 字符串测试了输出。这失败了。

我现在相信任何结构为 JSON 的字符串都会导致这个错误(我已经在 jsonlint.com 上测试了两个 JSON 脚本)。

非常感谢所有帮助!!!

Javascript代码:

function scan()
{
var script          = "../resources/ajax/fincenmanager/load_reports.php";
var params          = "";
var return_function = "load_wire";

document.getElementById("loading_screen").className = "show";

ajax(script, params, return_function);
}
function load_wire(text)
{
document.getElementById("loading_screen").className = "hidden";
alert(text);
}

PHP代码:

<?php
     require_once("../../config.php");
     require_once("../../library/FincenManager/fincenmanagerclass.php");

     header("Content-Type: application/json");

     $manager = new FincenManager("../../inputs/FincenManager/");

     $json = json_encode($manager);

     // Script Breaks After This Line.. 100% Sure :/
     echo $json;
 ?>
4

2 回答 2

0

出色地,

我正在研究推理,但我相信这应该足以帮助遇到这个问题的任何人:

我的 JSON 字符串中的双引号(编码对象时由 json_encode 创建的双引号)导致“echo”语句失败。为了解决这个问题,我使用以下命令将所有未转义的双引号替换为转义的双引号:

str_replace( " \" " , " \\\" " , json_encode($object) )

我相信这是 json_encode 没有自行转义双引号的结果,并且仅在尝试从 ajax 请求调用的外部脚本中“回显”时才会发生。

谢谢大家 :D

于 2012-08-10T15:19:44.257 回答
0

你需要逃避的不仅仅是"角色(正如你所发现的那样)。在这种情况下,问题在于字符串的结尾,"而 JSON 不希望在"a或 an之后出现字符。,]}

这个问题的答案将帮助您进一步了解字符的转义:单击

对于测试 JSON:JSONlint

于 2012-08-09T19:46:00.553 回答