Javascript AJAX在循环内调用

Javascript AJAX在循环内调用,javascript,jquery,ajax,node.js,express,Javascript,Jquery,Ajax,Node.js,Express,所以,我有一个数据列表,我要把它放到我的视图中,每个列表项都有一个id 这些列表项中的每一项都是一个条,我为每个条创建了一个文档,其中至少有一个用户要访问该条。对于那些没有用户的酒吧,没有创建文档 我需要对数据库中的每个列表项进行AJAX调用以进行检查 i) 如果该列表项存在文档 ii)如果存在一份文件,根据该文件有多少用户 我尝试了一个使用while循环的解决方案,其中while循环的更新包含在AJAX调用的回调中。这是密码 function updateAllGoingButtons(){

所以,我有一个数据列表,我要把它放到我的视图中,每个列表项都有一个id

这些列表项中的每一项都是一个条,我为每个条创建了一个文档,其中至少有一个用户要访问该条。对于那些没有用户的酒吧,没有创建文档

我需要对数据库中的每个列表项进行AJAX调用以进行检查

i) 如果该列表项存在文档 ii)如果存在一份文件,根据该文件有多少用户

我尝试了一个使用while循环的解决方案,其中while循环的更新包含在AJAX调用的回调中。这是密码

function updateAllGoingButtons(){
    var i = 0;
    var dataToPass = {};
    var numButtons = global_data_object.listData.businesses.length;
    while(i < numButtons){
        dataToPass.button = global_data_object.listData.businesses[i].id;
        dataToPass = JSON.stringify(dataToPass);
        ajaxFunctions.ready(ajaxFunctions.ajaxRequest('POST', '/update-buttons', dataToPass, function(data){
            console.log(i);
            i++;
        }));
    }
}
$('.btn-group').find('button').each(function() {
        console.log($(this).attr('id'));
        dataToPass.button = $(this).attr('id');
        var ajax = $.ajax({
            url: '/update-buttons',
            method: 'post',
            data: dataToPass,
            dataType: 'json',
        }).success(function(data){
            console.log(data);
        });
    });

您应该检查名为async的npm库,它有一个each方法,您可以在其中执行异步调用。如果您使用promises,Bluebird中的Promise.all方法可能对您非常有用。

您应该查看名为async的npm库,它有一个each方法,您可以在其中执行异步调用。如果您使用promises,Bluebird中的Promise.all方法可能对您非常有用。

因此,下面是我如何在一个循环中进行多个AJAX调用的。我使用了这个资源(很棒的资源!)

这是密码

function updateAllGoingButtons(){
    var i = 0;
    var dataToPass = {};
    var numButtons = global_data_object.listData.businesses.length;
    while(i < numButtons){
        dataToPass.button = global_data_object.listData.businesses[i].id;
        dataToPass = JSON.stringify(dataToPass);
        ajaxFunctions.ready(ajaxFunctions.ajaxRequest('POST', '/update-buttons', dataToPass, function(data){
            console.log(i);
            i++;
        }));
    }
}
$('.btn-group').find('button').each(function() {
        console.log($(this).attr('id'));
        dataToPass.button = $(this).attr('id');
        var ajax = $.ajax({
            url: '/update-buttons',
            method: 'post',
            data: dataToPass,
            dataType: 'json',
        }).success(function(data){
            console.log(data);
        });
    });

本质上,它所做的是选择一个类为“btn group”的div,然后使用jQuery each操作符迭代该div中的每个按钮。然后简单地发出一个AJAX请求,并使用成功链回调来访问返回的数据。

因此,下面是我如何在一个循环中进行多个AJAX调用的。我使用了这个资源(很棒的资源!)

这是密码

function updateAllGoingButtons(){
    var i = 0;
    var dataToPass = {};
    var numButtons = global_data_object.listData.businesses.length;
    while(i < numButtons){
        dataToPass.button = global_data_object.listData.businesses[i].id;
        dataToPass = JSON.stringify(dataToPass);
        ajaxFunctions.ready(ajaxFunctions.ajaxRequest('POST', '/update-buttons', dataToPass, function(data){
            console.log(i);
            i++;
        }));
    }
}
$('.btn-group').find('button').each(function() {
        console.log($(this).attr('id'));
        dataToPass.button = $(this).attr('id');
        var ajax = $.ajax({
            url: '/update-buttons',
            method: 'post',
            data: dataToPass,
            dataType: 'json',
        }).success(function(data){
            console.log(data);
        });
    });

本质上,它所做的是选择一个类为“btn group”的div,然后使用jQuery each操作符迭代该div中的每个按钮。然后简单地做出一个Ajax请求并使用成功链回调来访问返回的数据。< / P>是考虑使用承诺…承诺总是处理Ajax调用的最佳方法。您正在获得的错误<代码>请求实体太大不在哪里与您的<代码>连接,而<代码>循环。即使使用其他机制,它也会出现。@vijayP-所以即使我使用异步库,我仍然会得到相同的错误?我相信是的。该错误与上载大小有关。请先检查相关的配置。@ Vijayp -对不起,你是说先检查相关的配置吗?是的,考虑使用承诺…承诺总是处理Ajax调用的最好方法。你正在获得的错误<代码>请求实体太大没有连接到你的<代码>,而循环。即使使用其他机制,它也会出现。@vijayP-所以即使我使用异步库,我仍然会得到相同的错误?我相信是的。该错误与上载大小有关。请先检查关联的配置。@vijayP-对不起,您的意思是先检查关联的配置吗?