我有 jQuery .each
循环遍历数组。对于数组中的每个项目,它都会执行 AJAX 调用。当所有 AJAX 调用完成后,我想使用 .load()
方法重新加载页面的一部分。但是,如果我使用 .ajaxStop()
方法,这会产生无限循环。
我怎样才能实现这个目标?
下面的代码...
这是单击按钮时的部分
$.each(remMems, function( index, value ) {
$.ajax({
url: 'components/update_members.php',
type: 'POST',
data: {'memberbadge':value, 'function':'removemember'},
timeout: 6000
}); //end ajax call
//if its the last item, then refresh the area
if (index == lastitem) {
refreshMembers();
}
}); //end the for each loop
这是每个循环完成时调用的方法/函数,用于刷新页面部分
function refreshMembers() {
$('#listwrapper').load('members.php' + ' #ert_members');
};
最佳答案
您可以使用循环创建延迟对象数组。然后,您可以将该数组应用于 $.when
并调用 load()
方法。试试这个:
var requests = [];
$.each(remMems, function(index, value) {
requests.push($.ajax({
url: 'components/update_members.php',
type: 'POST',
data: {
'memberbadge': value,
'function': 'removemember'
},
timeout: 6000
}));
});
$.when.apply($, requests).done(function() {
$('#listwrapper').load('members.php #ert_members');
});
请注意,更好的方法是修改 update_members.php
以获取 value
数组并仅进行一次 AJAX 调用。
关于php - 所有其他 AJAX 调用完成后的 jQuery 加载函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40747298/