0

我想知道这种情况是否有非 jquery 解决方案:

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

4

1 回答 1

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);
于 2013-01-26T01:18:33.637 回答