我想循環10次的ajax請求。我注意到一些奇怪的錯誤,例如int是10,10倍。我已經搜索並發現它與AJAX異步相關。我希望等到ajax請求完成後才能繼續。爲AJAX做while循環?
在此先感謝。
do{
var int=0;
$.ajax({...},
success:function(response){ int++; },
});
alert(int);
}while(int<10);
我想循環10次的ajax請求。我注意到一些奇怪的錯誤,例如int是10,10倍。我已經搜索並發現它與AJAX異步相關。我希望等到ajax請求完成後才能繼續。爲AJAX做while循環?
在此先感謝。
do{
var int=0;
$.ajax({...},
success:function(response){ int++; },
});
alert(int);
}while(int<10);
我相信這是你正在尋找的代碼:
for (var int = 0; int < 10; int++) {
(function (int) {
$.ajax({
url : 'process.php',
success : function() {
alert("TEST");
}
});
})(int);
}
這裏是如何工作的一些鏈接更多的信息: jQuery AJAX calls in for loop [duplicate] JavaScript closure inside loops – simple practical example
您可以設置參數async: false
到ajax
對象。
$.ajax({
url: $(this).attr('href'),
type: 'GET',
async: false,
error: function(){
return true;
},
success: function(msg){
}
});
如果您success
處理程序是指int
,那麼,按時間運行int
將始終爲0,因爲循環完成後的很長。
如果你真的想呼籲陸續每次運行,不同的值,將呼叫轉移到一個函數,並把它作爲來自阿賈克斯成功處理程序需要:
function myAjax(int) {
if (int >= 10)
return;
$.ajax({ //...
success:function(response){
int++;
// whatever we need to do with int and the response
myAjax(int);
}
});
}
myAjax(0);
會將警報轉移到成功功能中嗎? – spaniol6
ajax的定義是異步的。使其等待擊敗它的目的。 jquery何時是更好的選擇。 http://api.jquery.com/jQuery.when/ – anu
@anu ajax並不總是異步的。是的,ajax的主要用法是async,但是你仍然可以在你的ajax請求中使用'async:false'。 –