2017-01-04 6 views
0

Я использую JQuery, чтобы получить ответ JSON от конечной точкиBOM добавляется любого возвращения или умереть ответ

die(json_encode(array('success' => 3, 'message' => 'You must use at least 1 credit or more.'))); 

Всякий раз, когда я проверяю ответ JSON, полученный в хромированных инструментов разработчика я получаю красную точку показывается \ ufeff до ответа json. Я закодировал PHP-файл с UTF-8 в Notepad ++, но он все еще добавляет символ спецификации для любого ответа. Если я верну что-нибудь или изменим штамп, он все равно покажет символ спецификации в ответе.

Я пробовал тот же файл на своем локальном хосте, и он работает абсолютно нормально, однако на сервере он добавляет символ.

Я в затруднении относительно того, что вызывает проблему, любая помощь будет принята с благодарностью.

+0

Является ли спецификация в вашем файле PHP? Вы можете проверить это, например. с помощью средства просмотра файлов hexa. Или HTTP-сервер добавляет спецификацию при отправке ответа клиенту? – Matey

+0

У меня был похожий опыт на разных серверах. Вероятно, добавление «ob_clean» http://php.net/manual/en/function.ob-clean.php решило эту проблему. – mistapink

ответ

1

Это 13 year old issue

Есть обходные пути (удаление BOM из всех PHP файлов, ob_clean при запуске сценария), но реальное решение должно иметь PHP скомпилирован с --enable-zend-multibyte или --enable-mbstring, или подождать, пока она не фиксирована командой PHP.

Поскольку вы иногда не имеете контроля над версиями PHP и флагами компиляции в размещенных средах, я предпочитаю удалять спецификации из всех файлов PHP, чтобы предотвратить такие проблемы. Это будет работать на любом сервере.

Ваше решение должно исправить выход с помощью JS. Но для других применений, например. генерируя изображение или другие двоичные данные через PHP или отправляя заголовки, вы не можете решить этот путь.

0

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