Решение проблемы со странным «system error -1072896658» в MSIE6 при работе с XMLHttpRequest и responseText
Не знаю, насколько этот трабл распространён, но у меня времени отобрал немало, поэтому чтобы никто больше с ним не имел проблем пишу следующий солюшн:
Проблема: MSIE6 выводит загадочный System Error -1072896658 (цифры могут быть другие) при обращении к свойству responseText объекта XMLHttpRequest.
Причина: Не может разобрать кодировку ответа.
Решение: Указываем в заголовке ответа сервера кодировку явным образом. Причём «utf-8» без дефиса, который частенько отдают сервера по умолчанию, он не понимает. Content-type роли не играет.
Пример заголовка: Content-type: application/json; charset=utf-8
(application/json — для json, согласно rfc4627)
Кстати при тестировании работы XMLHttpRequest при помощи FireBug будьте осторожны, у меня некоторые скрипты (использовал фреймфорк MooTools и синхронные запросы) почему-то отказались работать при выключенном FireBug. В суть проблемы не вникал. Решилось сменой ajax-класса MooTools на самописный (выложу чуть позже, когда отполирую).
Бонусный полезняк: file_get_contents('php://input') в PHP позволяет прочитать запрос клиента в сыром виде, не сталкиваясь с ограничениями при работе через $_POST. Подробнее про PHP wrappers.
Проблема: MSIE6 выводит загадочный System Error -1072896658 (цифры могут быть другие) при обращении к свойству responseText объекта XMLHttpRequest.
Причина: Не может разобрать кодировку ответа.
Решение: Указываем в заголовке ответа сервера кодировку явным образом. Причём «utf-8» без дефиса, который частенько отдают сервера по умолчанию, он не понимает. Content-type роли не играет.
Пример заголовка: Content-type: application/json; charset=utf-8
(application/json — для json, согласно rfc4627)
Кстати при тестировании работы XMLHttpRequest при помощи FireBug будьте осторожны, у меня некоторые скрипты (использовал фреймфорк MooTools и синхронные запросы) почему-то отказались работать при выключенном FireBug. В суть проблемы не вникал. Решилось сменой ajax-класса MooTools на самописный (выложу чуть позже, когда отполирую).
Бонусный полезняк: file_get_contents('php://input') в PHP позволяет прочитать запрос клиента в сыром виде, не сталкиваясь с ограничениями при работе через $_POST. Подробнее про PHP wrappers.