我正在关注有关如何进行长轮询的视频教程,似乎我已经完成了,但是由于某种原因,我遇到了一个问题,尽管我从服务器收到了一个响应,但我的警报显示了 3-6 次。我认为如果我们得到一个回应,“成功”只会发生一次。
第二个问题是,如何让这个 javascript 代码每 30 秒取消一次 ajax 调用,然后重新启动它?我已经在其中放入了带有 .abort() 的 setInterval,同时尝试了没有运气,可能是错误的位置。
感谢您的智慧和帮助!
var timestamp = null;
var imp = null;
var annk = null;
function waitForMsg(){
$.ajax(
{
type: "GET",
url: "/test?timestamp=" + timestamp + "&imp=" +imp + "&annk=" +annk,
dataType : 'json',
async: true,
cache: false,
success: function(data)
{
alert("hello");
if(data.annkr > "0"){
$("#myidone").css("background-color", "#cccccc");
}else{
$("#myidone").css("background-color", "#cccccc");
}
if(data.impr > 0){
$("#myidtwo").css("background-color", "#000000");
}else{
$("#myidtwo").css("background-color", "#000000");
}
annk = data.annkr;
imp = data.impr;
timestamp = data.timestamp;
setTimeout('waitForMsg()',2000);
}
});
}
$(document).ready(function(){
waitForMsg();
});
我在 Stackoverflow 上阅读了有关 readystates 的内容,但是我如何确保它只准备好一次并在准备好之后再做呢?