我有jQuery .load()
循环遍历数组。对于数组中的每个项目,它正在进行AJAX调用。当所有AJAX调用完成后,我想使用.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');
};
这是每个循环完成时调用的方法/函数,用于刷新页面的部分
UIImageView *leftIconView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Bartender"]];
leftIconView.contentMode = UIViewContentModeScaleAspectFit;
leftIconView.frame = CGRectMake(5, 5, pinView.frame.size.height- 20, pinView.frame.size.height - 20);
pinView.leftCalloutAccessoryView = leftIconView;
leftIconView.layer.cornerRadius = 5;
leftIconView.clipsToBounds = YES;
答案 0 :(得分:2)
您可以使用循环创建延迟对象数组。然后,您可以将该数组应用于$.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调用。