Ошибка формата JSON, хотя эхо совпадает с DataTables - PullRequest
0 голосов
/ 19 ноября 2010

Я запускаю длинный PHP-скрипт, который я модифицировал для форматирования PDO, в отличие от дрянных вызовов mysql Db.В конце скрипта вывод $ кодируется в json:

echo json_encode( $output );

Когда я запускаю два скрипта, вывод на экран будет IDENTICAL, но моя программа jquery DataTables возвращает ошибку в результатах, закодированных в PDOи не возвращение mysql.

Я запустил регулярные выражения для двух результатов, и они являются ИДЕНТИЧНЫМИ, так что почему это происходит, я не знаю.

У кого-нибудь когда-нибудь возникала такая же проблема?

EDIT

Состояния ошибки DataTables:

Предупреждение DataTables: данные JSON с сервера не могут быть проанализированы,Это вызвано ошибкой форматирования JSON.

Ответы [ 5 ]

1 голос
/ 11 мая 2011

У меня такие же проблемы, но только при использовании PDO с подготовленными утверждениями .JSONLint проверяет вывод, но DataTables просто не принимает его.Я создал свою собственную функцию, используя getJSON для извлечения данных JSON из моего источника данных PHP, и это на самом деле работает.Кроме того, я создал дубликат источника данных, в котором я использую mysqli, и при просмотре вывода в моем браузере и выполнении сравнения на 2 выходах в notepad ++ оба идентичных.

1 голос
/ 24 марта 2011

У меня тоже есть эта проблема. Просто потому, что я использую jquery 1.5.1. после перехода на пользователя 1.4.4 проблема исчезает.

1 голос
/ 13 апреля 2011

Для всех тех людей, которые приходят сюда из Google, попробуйте это:

echo '('.json_encode( $output ).')';
1 голос
/ 19 ноября 2010

Один из методов, который нужно использовать, - это получить возврат JSON из Firebug (или инспектора Webkit или чего-либо еще) и запустить его через http://jsonlint.com.Если строка JSON идентична, то я предполагаю, что выводится что-то еще (возможно, предупреждение PHP или просто эхо строки), что приводит к сбою синтаксического анализа.DataTables использует синтаксический анализатор JSON, встроенный в jQuery 1.4, и выдаст эту ошибку, когда синтаксический анализатор не сможет декодировать строку.

Если это не поможет, вы можете дать нам ссылку на страницу?

0 голосов
/ 17 апреля 2012

У меня была точно такая же ошибка, и я использовал валидатор, чтобы убедиться, что мой формат был действительным, используя это: http://jsonformatter.curiousconcept.com/

Это было допустимо, и оказалось, что мой PHP-скрипт "повторял" другиеданные из-за моей глупой ошибки.

Попробуйте вызвать скрипт, который генерирует JSON в вашем браузере напрямую , чтобы увидеть, отображаются ли другие вещи, испортить код JSON, который получает ваш dataTable.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...