Nov. 14th, 2011

pozitronik: (Default)
Пишу очередную фигнюшку для служебных нужд, интерфейс, как обычно, браузерный, а чтобы работать было удобно, как с толстым клиентом, используется максимум AJAX. Сегодня заметили, что в IE всех версий все функции, завязанные на возврат данных, полученных с помощью xmlhttp.responseText (для IE xmlhttp создаётся из ActiveX) выдают ошибку -1072896658. Другие браузеры работают корректно, правда там и xmlhttp создаётся как new XMLHttpRequest().

Цифирь ошибки не гуглится (находятся описания других похожих ошибок, но не этой), пришлось думать самому. Помогло то, что в пятницу всё работало, значит причина ошибки в изменениях, сделанных на выходных. JS-код не менялся, а вот в php-обработчике AJAX изменения были. Я исправлял неверно определяемую кодировку выдачи ответов, ну и для принудительного определения содержимого как UTF-8 скопипастил и другого скрипта строчку.
header("Content-Type: text/html; charset=utf-8");

Кодировку это, конечно, исправило. А всё остальное сломало.
Причина проста: я переправил Content-Type. А у XMLHttpRequest для передачи текстовых данных он всегда должен быть равным application/x-www-form-urlencoded.

Достаточно было убрать замену Content-Type, и всё заработало (правильный контент-тайп ставится в js-скрипте при формировании xmlhttp):
header("charset=utf-8");

December 2016

S M T W T F S
    123
45678910
1112131415 1617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 3rd, 2025 07:17 am
Powered by Dreamwidth Studios