即使 echo 与 DataTables 匹配,JSON 格式错误

发布于 2024-10-03 10:36:17 字数 418 浏览 4 评论 0原文

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

echo json_encode( $output );

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

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

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

编辑

数据表错误状态:

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

I run a lengthy PHP script I was modifying to PDO formatting as opposed to crappy mysql Db calls. At the end of the script, the $output is json encoded with:

echo json_encode( $output );

When I run the two scripts, the output to screen is IDENTICAL but my jquery DataTables program returns an error on the PDO encoded results and not the mysql return.

I have run regex's on the two results and they are IDENTICAL so why this is happening is beyond me.

Anybody ever had the same issue?

EDIT

DataTables error states:

DataTables warning: JSON data from
server could not be parsed. This is
caused by a JSON formatting error.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

子栖 2024-10-10 10:36:17

One method to use is to grab the JSON return from Firebug (or Webkit's inspector or whatever) and run it through http://jsonlint.com . If the JSON string is identical, then I would guess that there is something else being output (perhaps a PHP warning, or just an echo of a string somewhere) which is causing the parsing to fail. DataTables makes use of the JSON parser built into jQuery 1.4, and will give this error when the parser cannot decode the string.

If that doesn't help, are you able to give us a link to the page?

無處可尋 2024-10-10 10:36:17

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

I got this problem too. Just because I use jquery 1.5.1.
after I change to user 1.4.4, the problem disappear.

濫情▎り 2024-10-10 10:36:17

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

echo '('.json_encode( $output ).')';

For all those people that come here from google, try this:

echo '('.json_encode( $output ).')';
ぃ双果 2024-10-10 10:36:17

我也有同样的问题,但仅限于使用 PDO 和准备好的语句时。 JSONLint 验证输出,但 DataTables 不接受它。
我已经使用 getJSON 创建了自己的函数来从 PHP 数据源获取 JSON 数据,这实际上是有效的。
此外,我创建了一个重复的数据源,在其中使用 mysqli,当在浏览器中查看输出并在 notepad++ 中对两个输出进行比较时,两者是相同的。

I have the same issues, but only when using PDO with prepared statements. JSONLint validates the output, but DataTables just does not accept it.
I've created my own function using getJSON to fetch JSON data from my PHP datasource, and this actually works.
Additionally I've created a duplicate datasource in which I am using mysqli, and when viewing the output in my browser, and running a compare on the 2 outputs in notepad++, both are identical.

酷炫老祖宗 2024-10-10 10:36:17

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

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

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

I had exactly the same error and used a validator to make sure that my format was valid using this: http://jsonformatter.curiousconcept.com/

It was valid and it just turns out that my PHP script was "echoing" other data due to a stupid mistake of mine.

Try calling the script that generates the JSON in your browser directly to see if other things are being displayed, messing up the JSON code that your dataTable receives.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文