ajax调用检测缺乏响应

时间:2013-01-26 01:10:31

标签: javascript ajax

我想知道这种情况是否存在非Jquery解决方案:

没有回复ajax请求,因为服务器的互联网连接断开,客户端的互联网连接断开,或服务器崩溃。 xmlhttprequest对象中是否有一些内置的方法/事件可以帮助解决这个问题?

1 个答案:

答案 0 :(得分:1)

您可以设置超时属性:

var xhr = new XMLHttpRequest();
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            done(request.responseText);
        }
    },
    done = function (response) { console.log(response) },
    fail = function () {};

    xhr.open("GET", "url", true);
    xhr.timeout = 4000;
    xhr.ontimeout = function () { xhr.abort(); fail(); }
    xhr.send();

或者只使用window.setTimeout

var xhr = new XMLHttpRequest(),
    timeout;

    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4) {
            done(request.responseText);
            clearTimeout(timeout);
        }
    };

    xhr.open("GET", "url", true);
    xhr.timeout = 4000;
    xhr.ontimeout = function () { xhr.abort(); fail(); }
    xhr.send();
    timeout = window.setTimeout(function () { xhr.abort() }, 4000);