1
我想在一個循環中執行一個Ajax函數,我希望我的循環只有在ajax調用完成時才轉到下一條指令。我試圖把ajax async設置爲false,但是我的加載消息沒有出現,並且當循環的所有迭代完成時我的屏幕刷新。如果async設置爲true,它將同時執行所有操作。循環內的JQuery Ajax
這裏是我的代碼:
function pingAll(url)
{
var arrIDs = new Array();
var pattern = /[0-9]+/g;
$("input:checkbox[name=checkbox-router]:checked").each(function()
{
var strCheckboxID = $(this).attr('id');
var routerID = strCheckboxID.match(pattern);
arrIDs.push(routerID);
});
for (var i in arrIDs)
{
pingRouter(url + arrIDs[i], arrIDs[i]);
}
}
function pingRouter(url, shortID)
{
$('#ping-resp-' + shortID).html('Loading...');
var pingRequestTimeout = $('#pingRequestTimeout').val();
url = url + "?timeout=" + pingRequestTimeout;
$.ajax
({
url: url,
async: true,
success: function(data)
{
var objData = $.parseJSON(data);
var response = objData.response.replace(/(\r\n|\n|\r)/gm,"")
.
.
.
var latency = parseFloat(objData.latency);
$('#ping-resp-' + shortID).html(latency + ' ms');
}
});
return;
}
感謝您的幫助。
您需要以某種方式製作此並行程序,例如使用setTimeout並保留Global var以跟蹤Loop中的元素。 – Burimi