javascript - 如何持续发送ajax请求直到收到响应?

标签 javascript xml ajax

我需要每隔 2 秒左右不断地敲击相同的 ajax 请求,直到收到响应。这是因为它发送到的设备每次会进入休眠状态 3 秒——它需要在唤醒时捕获请求。有没有一种简单的方法可以通过在我的代码中添加一些内容来做到这一点?不使用jquery...

这是我只发送一个请求的内容:

 function ePOST(url, postData, callback) {
var postReq = AjaxRequest();
postReq.onreadystatechange = function() {
    if (postReq.readyState == 4) {
        if (postReq.error) {
            callback(1, "Request had an error.");
            alert('postReq Error');
        } else {
            var stat;
            try {
                stat = postReq.status;
            } catch (err) {
                callback(1, "Failed to get HTTP status from server.");
                return;
            }
            if (stat == 200 || stat == 0) {
                callback(0, postReq.responseText);
            } else {
                callback(1, "Unexpected HTTP Status: "
                        + postReq.status);
                alert('Unexpected HTTP Status: '
                    + postReq.status);
            }
        }
    }
}
if (postReq.overrideMimeType){
    postReq.overrideMimeType("text/xml");
}
setTimeout('',1000);
postReq.open("POST", url, true);
postReq.send(postData);
return postReq;
}

最佳答案

我认为您只需对该函数进行很少的修改就可以做到这一点。

var intervalId = window.setInterval(function() {
    epost(<url>,<data>,function(error,response) {
        if (!error) {
            window.clearInterval(intervalId);
        } else {
            alert(response); // or handle error some other way
        }
        // do something with the data
    });
},2000);

我不是100%确定intervalId将可用于闭包,但如果不是,你总是可以这样做:

var intervalId;
intervalId = window.setInterval(....

我能想到的唯一问题是ajax调用的返回时间是否超过2秒,在这种情况下你可能无法及时清除间隔。

关于javascript - 如何持续发送ajax请求直到收到响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18137467/

相关文章:

java - GridLayoutManager 相同的图像尺寸

javascript - 如何使用原始 AJAX 将数据从客户端传递到服务器?

javascript - 通过 Ajax 请求发送后无法解析 JSON

javascript - 防止圆圈重叠

javascript - jquery 可拖动 div 中嵌套跨度的 z-index

java - 从显示 View 在 Eclipse 控制台中漂亮地打印 XML

javascript - 多次 AJAX 调用出现错误

javascript - 使用 Php 将数据从一个客户端推送到另一个客户端

javascript - root id 中没有呈现任何内容

python - 生成使用默认命名空间的 XML