我需要每隔 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/