Все привет!
Периодически ajax скрипт в IE ведет себя странным образом, по сетевым логам видно, что IE почти 1 минуту пытается отправить запрос, потом происходит отправка в пол минуты и быстрый ответ с ошибкой сервера 500.
Данная проблема в основном замечается при листании фотографий в галереи. Работа JS не обрывается, и если открыть следующею фотку и вернуться обратно, зависания нету.
Все остальные браузеры работают идеально.
Кто-нибудь сталкивался с такой проблемой? Может это баг браузера и есть какой то способ обхода.
Читал что можно не использовать readystatechange и заменять на рекурсивный setTimeout с опросом readyState через каждый 10-50 мс (так реализовать в dojo с использованием setInterval) но решит ли это проблему?
var Ajax = function(){
try {
xhr = new XMLHttpRequest();
} catch (trymicrosoft) {
try {
xhr = new ActiveXObject("Msxml2.XMLHTTP");
} catch (othermicrosoft) {
try {
xhr = new ActiveXObject("Microsoft.XMLHTTP");
} catch (failed) {
xhr = null;
}
}
}
var readystatechange = function(){
if(xhr.readyState != 4) return;
if(xhr.status >= 200 && xhr.status < 400){
var data = (dataType == 'json') ? json(xhr.responseText) : xhr.responseXML;
var text = xhr.responseText;
if(callback){ callback(data, text, savequery);}
else if(_t.onComplete){_t.onComplete(data, text, savequery);}
}else{
if(_t.onError){_t.onError(strquery, savequery);}
}
}
this.post = function(query, fn){
if(typeof fn === "function"){
callback = fn;
}else callback = null;
savequery = query;
strquery = query2url(query);
xhr.open("POST", url, async);
xhr.onreadystatechange = readystatechange;
xhr.setRequestHeader("Content-Type", contentType);
xhr.send(strquery);
};
}