重新建立连接时,xmlhttprequest状态不会更改

时间:2014-06-19 02:12:14

标签: javascript ajax xmlhttprequest

我想发布一个http请求,直到收到肯定的回复。如果我的笔记本电脑上的wifi打开,我得到一个肯定的响应,程序退出(正确)。如果我的笔记本电脑上的wifi最初关闭但在程序仍在尝试时打开,我没有得到肯定的响应,程序一直在尝试并失败直到它退出。当wifi打开时,不应该xmlhttp.status = 200吗?

xmlhttp = new XMLHTTPRequest();
xmlhttp.open("POST", url, true);
xmlhttp.setRequestHeader('User-Agent', 'XMLHTTP/1.0');

data = "Some text here";
xmlhttp.send(Base64.encode(data));

var timeout = 16;
var response = '';

for (var t = 0; t < timeout; t++) {

    if (xmlhttp.ReadyState == 4) {

        // If XMLHTTPRequest returns status code 200 (OK) and the response text contains REPORT_SUCCESS, it means that the report was successful.
        if (xmlhttp.Status == 200 && xmlhttp.ResponseText.indexOf(REPORT_SUCCESS) != -1) {

            return true;
        } else {
            if (xmlhttp.Status == 200) {
                // if the XMLHTTPRequest returns status code 200 (ok) and the response text does not contain REPORT_SUCCESS
                break;
            } else {
                //try again 
            }
        }
    }

    WScript.Sleep(1000);
}

1 个答案:

答案 0 :(得分:1)

xmlhttp已完成请求,并在wifi关闭时收到错误响应。当wifi打开时,它不会重新尝试自动请求。它必须由你自己完成。

ReadyState = 4,状态!= 200始终在循环中。

如果xmlhttp开始发送请求并同时打开wifi,您的代码将会正常工作。