У меня есть приложение 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?
Спасибо за помощь.
С Уважением,
Проблема действительно была вызвана некоторыми символами спецификации, которые появились в некоторых файлах.
мой config.Global.conf
файл был закодирован в UTF8 (с BOM), плюс он был в начале <feff><feff>
что я мог видеть, открывая его с VIM.
Я исправил проблему, удалив эти дополнительные символы спецификации из моего файла конфигурации, а также преобразовав файлы UTF8 (с спецификацией) в UTF8 без спецификации.
Проверьте здесь, чтобы увидеть, как я узнал, какие файлы вызывали проблему: Найти источник спецификации в Zend Framework 2
Других решений пока нет …