ОБНОВЛЕНИЕ: Вот пример того, как вы можете справиться с таймаутом:
var xmlHttp = new XMLHttpRequest();
xmlHttp.open("GET", "http://www.example.com", true);
xmlHttp.onreadystatechange=function(){
if (xmlHttp.readyState == 4 && xmlHttp.status == 200) {
clearTimeout(xmlHttpTimeout);
alert(xmlHttp.responseText);
}
}
// Now that we're ready to handle the response, we can make the request
xmlHttp.send("");
// Timeout to abort in 5 seconds
var xmlHttpTimeout=setTimeout(ajaxTimeout,5000);
function ajaxTimeout(){
xmlHttp.abort();
alert("Request timed out");
}
В IE8 вы можете добавить обработчик событий timeout к объекту XMLHttpRequest
.
var xmlHttp = new XMLHttpRequest();
xmlHttp.ontimeout = function(){
alert("request timed out");
}
Я бы порекомендовал не делать синхронные вызовы, как предполагает ваш код, а также рекомендую использовать для этого инфраструктуру javascript. jQuery является самым популярным. Это делает ваш код более эффективным, простым в обслуживании и совместимым с различными браузерами.