我正在使用json_encode()
,我正在使用的文件将被解析为JavaScript网格。
例如:
Index.php
有一个调用data.php
的JavaScript,我将PHP数组解析为JSON。问题是,有没有办法知道Index.php
是否正确获取数据。某种调试?
答案 0 :(得分:2)
json_decode
如果失败则会返回NULL
:
if (json_decode($your_json_var, true) === NULL)
{
// NULL is returned if the json cannot be decoded or if the
// encoded data is deeper than the recursion limit.
}
为了完美保存,请与'null'
进行比较:
if (json_decode($json, true) === NULL && $json !== 'null')
{
// NULL is returned if the json cannot be decoded or if the
// encoded data is deeper than the recursion limit.
}
建议使用PHP 5.3或更高版本,它提供json_last_error
的访问权限,当发生错误情况时,{{3}}会返回!== JSON_ERROR_NONE
。
答案 1 :(得分:2)
由于json_decode
可能会返回文字TRUE
,FALSE
或NULL
值,因此检查问题的唯一100%安全方法是json_last_error
:
if (json_last_error() !== JSON_ERROR_NONE) {
... decoded with error ...
}
当然,这仅在PHP 5.3中添加。在此之前,您必须检查返回结构中的预期数据。
答案 2 :(得分:1)
您的Index.php脚本应返回状态代码以指示失败或成功。
答案 3 :(得分:1)
答案 4 :(得分:1)
...有没有一种方法可以让您了解Index.php是否正确获取数据。还是某种调试?
如果您正在使用正确的客户端调试器(并且2012年不会no excuse!),您可以使用“网络”选项卡或类似信息查看数据来回到服务器。我假设您并不期望json_encode
生成无效的JSON,因为不是您期望的数据(例如,您正在尝试使用该结构等)。您可以将发回的数据复制到客户端,然后将其粘贴到http://jsonlint.com中以重新格式化,以便查看最终结果。
答案 5 :(得分:1)
如果您正在使用jQuery等库来进行JavaScript交互,那么如果您选择监视它,则会引发错误事件。 请在此处查看“错误”:http://api.jquery.com/jQuery.ajax/
您也可以直接在浏览器中调用data.php文件,看看您期望的数据是否正在返回。