Pull to refresh

AJAX, IE и CP1251

Reading time 1 min
Views 837
Делал я тут как-то пое-чего на аяксе, передавал данные в JSON'е, кодировка всего на сайтине — cp1251. Дабы не изобретать велосипед использовал jQuery.
Все отлично работало пока я не решил протестить все в IE. IE у меня седьмой версии, в других не проверял пока, но по-моему там та же фича.
Так вот, ничего не работало безовсяких ошибок (видимых). Покопавшись выяснил что jQuery возвращает parsererror. Покопавшись глубже выяснил что транспорт выпадает с эксепшеном при доступе к полю responseText а поле responseXML содержит пустой документ (что естественно, данные передаются текстом).
Поработав лобзиком и гуглем с полчаса методом тыка выяснил что:
  1. ежели кодировка с заголовках стоит не utf-8 IE отказывается работать абсолютно;
    тип контента application/ajax и application/x-javascript тоже не рулят.

    В общем в конце концов стал выдавать заголовок Content-type: text/plain; charset=utf-8 и перекодировать все в utf-8 (благо с iconv это вышло тремя строчками).
    Нет, я конечно читал что IE не дружит с виндовой же кодировкой cp1251 но пока разобрался ;)
    Люди! Не повторяйте чужих ошибок :)

    UPD


    Мда, посыпаю голову пеплом. Оказалось, что все довольно неплохо исправляется заменой кодировки cp1251 на windows-1251 :) Спасибо за совет.
Tags:
Hubs:
+4
Comments 8
Comments Comments 8

Articles