所有其他AJAX调用完成后,jQuery加载函数

时间:2016-11-22 16:03:23

标签: php javascript ajax jquery

我有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;

1 个答案:

答案 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调用。