Javascript 多个Ajax调用,一个回调

Javascript 多个Ajax调用,一个回调,javascript,jquery,ajax,Javascript,Jquery,Ajax,我目前正在用CakePHP框架开发一个web应用程序。您可以看到楼层平面图,并且可以将用户从一个座位拖放到另一个座位 一些背景信息: 打开平面图时,我会在源代码中生成一个隐藏变量,列出所有用户及其设备,例如: var users = "user1,user2,user3" 当有人想要保存用户在平面布置图上的位置时,他们调用此方法: function getPositions() { $.each(users.split(","), function(i, user) { s

我目前正在用CakePHP框架开发一个web应用程序。您可以看到楼层平面图,并且可以将用户从一个座位拖放到另一个座位

一些背景信息:

打开平面图时,我会在源代码中生成一个隐藏变量,列出所有用户及其设备,例如:

var users = "user1,user2,user3"
当有人想要保存用户在平面布置图上的位置时,他们调用此方法:

function getPositions() {
   $.each(users.split(","), function(i, user) {
       setPosition('#u'+user, 'us');
   });
}
他们将ajax方法称为“setPosition”:

如您所见,此方法称为x次(x=楼层平面上的用户数)。 当然,我不想告诉用户x次函数成功了

我需要什么:
一个警报,告诉用户楼层平面图已保存(或错误)

您可以在大量AJAX请求完成时使用
$.when
执行某些逻辑。试试这个:

var requests = []; // array to store all requests.

function getPositions() {
    $.each(users.split(","), function(i, user) {
        setPosition('#u'+user, 'us');
    });

    $.when.apply($, requests).done(function() {
        console.log('Requests completed...');
    });
}

function setPosition(object, type) {
    var dataX = { "positions": [] };

    var position = $(object).offset();
    dataX.positions.push({
        "object"   : object,
        "posx"     : position.left,
        "posy"     : position.top
    });

    // add the request to the array
    requests.push($.ajax("/CakePHP/seats/Rooms/Save/" + type, {
        type : 'post',
        data : dataX
    }));
}

$.when.apply($,requests)
-这真是一个很棒的部分!那真的很容易。谢谢!
var requests = []; // array to store all requests.

function getPositions() {
    $.each(users.split(","), function(i, user) {
        setPosition('#u'+user, 'us');
    });

    $.when.apply($, requests).done(function() {
        console.log('Requests completed...');
    });
}

function setPosition(object, type) {
    var dataX = { "positions": [] };

    var position = $(object).offset();
    dataX.positions.push({
        "object"   : object,
        "posx"     : position.left,
        "posy"     : position.top
    });

    // add the request to the array
    requests.push($.ajax("/CakePHP/seats/Rooms/Save/" + type, {
        type : 'post',
        data : dataX
    }));
}