我正在尝试在循环中执行 Ajax 函数,并且我希望我的循环仅在 ajax 调用完成时才转到下一条指令。我试图将 ajax 异步设置为 false,但我的加载消息没有出现,并且当循环的所有迭代完成时我的屏幕刷新。如果 async 设置为 true,它会同时执行。
这是我的代码:
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;
}
谢谢你的帮助。