超过2秒的Javascript AJAX超时无法正常工作

时间:2017-06-06 10:02:19

标签: javascript ajax

我有这个函数用于将数据发送到我的(localhost)服务器。但是,当Wamp意外停止(localhost服务器关闭)时,我注意到超时无法正常工作。

如果我将超时设置为2000 mS,则回调通常会被调用。如果我设置为4000 mS,则永远不会调用超时。相反,readystate将达到4(DONE),但没有HTTP状态(零?)。

调试如下:

READY STATE: 2 STATUS: 0  
READY STATE: 4 STATUS: 0

这是正常的还是我想念这里的东西? 我最近使用的是Firefox 53.谢谢。

function ServerSend(url) {

    var xhr = new XMLHttpRequest();

    // In Internet Explorer, the timeout property may be set only after calling the open() method and before calling 
    // the send() method.

    xhr.open("GET", url, true);
    xhr.timeout = 4000;

    // https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState
    // https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
    xhr.onreadystatechange = function() {

        if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
              ShowInfo(xhr.responseText)
        }

        // DEBUG
        {
              console.log("READY STATE: "+xhr.readyState+" STATUS: "+xhr.status);
        }

    };


    xhr.ontimeout = function () { 

        xhr.abort();
        alert("Timed out!!!"); 

        //ShowInfo("Server timeout");
    };


    xhr.send();
}

0 个答案:

没有答案