Ответ веб-сервера генерирует UTF-8 (BOM) JSON

У меня есть приложение ZF2 с методом, который возвращает массив в формате JSON, используя:

$response->setContent(json_encode($reponse));
return $response;

Запрос отправляется через Ajax с использованием jQuery 1.10.2, и когда я перехватываю тело ответа, используя режим разработчика или Fiddler, я вижу в http://jsonlint.com/ что JSON недействителен. В результате мой успешный обратный вызов Ajax запускается с IE8, но с более поздними версиями или браузерами, такими как Firefox или Chrome, он напрямую переходит к обратному вызову с ошибкой.

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

Еще более странно то, что с тем же исходным кодом у моего клиента вообще нет проблем с Internet Explorer 10 в его среде.

Ребята, знаете ли вы, что может вызвать такую ​​разницу в наших средах PHP / Apache?

Спасибо за помощь.
С Уважением,

0

Решение

Проблема действительно была вызвана некоторыми символами спецификации, которые появились в некоторых файлах.

мой config.Global.conf файл был закодирован в UTF8 (с BOM), плюс он был в начале <feff><feff> что я мог видеть, открывая его с VIM.

Я исправил проблему, удалив эти дополнительные символы спецификации из моего файла конфигурации, а также преобразовав файлы UTF8 (с спецификацией) в UTF8 без спецификации.

Проверьте здесь, чтобы увидеть, как я узнал, какие файлы вызывали проблему: Найти источник спецификации в Zend Framework 2

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]