【发布时间】:2012-08-09 19:19:27
【问题描述】:
我通常通过搜索找到我的答案,但这些让我很困惑,我找不到任何相关文章:/
我只是对我的 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;
?>
【问题讨论】:
-
var_dump($manager)的输出是什么? -
如果我将 echo 语句更改为 var_dump($manager) 脚本仍然会冻结并且不会返回输出,所以我不确定:/ 我假设它必须有一些字符或某些东西不喜欢,但是 TBH 我迷路了:P
-
在设置
$manager之后立即执行(在尝试设置json_encode()之前)。注释掉echo行和json_encode行。可能只是您正在创建的对象由于某种原因无法进行 JSON 编码。 -
刚刚尝试过,仍然冻结:/ 奇怪的是,如果我删除 echo 语句,它将运行良好(它将 JSON 编码对象并返回空白警报语句)。这就是让我相信这是 echo 语句失败的原因。
-
非常有趣...刚刚解决了这个问题。显然,我的字符串中有双引号导致回显失败。我使用 str_replace("\"", "'", $json) 将双引号更改为单引号,并且字符串完美返回...有人知道这是为什么吗?(这只发生在 ajax 调用中)