我正在關注如何進行長輪詢的視頻教程,而且看起來我已經完成了,但由於某種原因,我遇到了一個問題,儘管我從服務器收到一個響應,但我的警報顯示了3-6倍。如果我們得到一個迴應,我認爲「成功」只會發生一次。JS - 長時間輪詢成功時多次獲取警報?
第二個問題是,我該如何讓這個javascript代碼每30秒取消一次ajax調用,然後重新啓動它?我在裏面放置了setInterval和.abort(),但是試驗時沒有運氣,可能是錯誤的放置。
謝謝你的智慧和幫助!
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();
});
我讀了關於readystates的Stackoverflow上的內容,但是如何確保它只准備好一次,並在準備好之後執行?
謝謝,第二種方法是最好的,易於使用。現在工作正常。 – Darius