0

我运行了一个冗长的 PHP 脚本,我正在修改为 PDO 格式,而不是蹩脚的 mysql Db 调用。在脚本的最后,$output 是 json 编码的:

echo json_encode( $output );

当我运行这两个脚本时,屏幕的输出是相同的,但我的 jquery DataTables 程序在 PDO 编码结果上返回错误,而不是 mysql 返回。

我已经对这两个结果运行了正则表达式,它们是相同的,所以为什么会发生这种情况超出了我的理解。

有人遇到过同样的问题吗?

编辑

数据表错误状态:

DataTables 警告:无法解析来自服务器的 JSON 数据。这是由 JSON 格式错误引起的。

4

5 回答 5

1

一种使用方法是从 Firebug(或 Webkit 的检查器或其他)获取 JSON 返回并通过http://jsonlint.com运行它。如果 JSON 字符串是相同的,那么我猜还有其他东西正在输出(可能是 PHP 警告,或者只是某处字符串的回显)导致解析失败。DataTables 使用 jQuery 1.4 中内置的 JSON 解析器,当解析器无法解码字符串时会给出此错误。

如果这没有帮助,你能给我们一个页面链接吗?

于 2010-11-19T07:33:28.910 回答
1

我有同样的问题,但只有在使用PDO 和prepared statements时。JSONLint 验证输出,但 DataTables 只是不接受它。我创建了自己的函数,使用 getJSON 从我的 PHP 数据源中获取 JSON 数据,这确实有效。此外,我创建了一个使用 mysqli 的重复数据源,当在浏览器中查看输出并在 notepad++ 中对 2 个输出进行比较时,两者都是相同的。

于 2011-05-11T12:54:46.147 回答
1

我也遇到了这个问题。只是因为我使用 jquery 1.5.1。在我更改为用户 1.4.4 后,问题就消失了。

于 2011-03-24T07:22:31.833 回答
1

对于所有从谷歌来到这里的人,试试这个:

echo '('.json_encode( $output ).')';
于 2011-04-13T02:56:47.103 回答
0

我有完全相同的错误,并使用验证器来确保我的格式有效:http: //jsonformatter.curiousconcept.com/

它是有效的,事实证明,由于我的一个愚蠢的错误,我的 PHP 脚本正在“回显”其他数据。

尝试直接在浏览器中调用生成 JSON 的脚本以查看是否显示了其他内容,从而弄乱了 dataTable 接收的 JSON 代码。

于 2012-04-17T17:20:57.403 回答