即使 echo 与 DataTables 匹配,JSON 格式错误
我运行了一个冗长的 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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
一种使用方法是从 Firebug(或 Webkit 的检查器或其他)获取 JSON 返回,并通过 http://jsonlint.com< 运行它/a> .如果 JSON 字符串相同,那么我猜测还有其他内容正在输出(可能是 PHP 警告,或者只是某处字符串的回显),这导致解析失败。 DataTables 使用 jQuery 1.4 中内置的 JSON 解析器,当解析器无法解码字符串时,将给出此错误。
如果这没有帮助,您能给我们一个该页面的链接吗?
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?
我也遇到这个问题了。只是因为我使用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.
对于所有从谷歌来到这里的人,试试这个:
For all those people that come here from google, try this:
我也有同样的问题,但仅限于使用 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.
我遇到了完全相同的错误,并使用验证器来确保我的格式是有效的: 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.