javascript - 多次 Ajax 调用,一次回调

标签 javascript jquery ajax

我目前正在使用 CakePHP-Framework 开发 Web 应用程序。您可以查看平面图,也可以将用户从一个座位拖放到另一个座位。

一些背景信息:

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

var users = "user1,user2,user3"

当有人想保存用户在平面图上的位置时,他们调用这个方法:

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

他们将 ajax 方法称为“setPosition”:

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

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

    $.ajax("/CakePHP/seats/Rooms/Save/" + type,
    {
        type : 'post',
        data : dataX
    });
}

如您所见,此方法被调用了 x 次(x = 平面图上的用户数)。 当然,我不想告诉用户 x 次该功能已成功。

我需要什么: 一个提醒用户楼层平面图已保存(或错误)

最佳答案

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

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
    }));
}

关于javascript - 多次 Ajax 调用,一次回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24991971/

相关文章:

javascript - 复制到剪贴板在 JavaScript 代码中不起作用,但在 Chrome 控制台上起作用

javascript - 我们如何将javascript变量设置为jsf参数

jquery - 我试图在我的站点中实现 animate.css,它只适用于 jQuery 的 ready(load) 事件,它不适用于其他鼠标事件?

javascript - Jquery ajax 导航,等待图像加载的更好方法?

php - 如何处理从一个客户端到一个 PHP 脚本的多个并行请求

javascript - 显示基于 div 的隐藏不起作用

javascript - 如何在可滚动的 div 中创建图像

javascript - 停止鼠标按下功能

javascript - 单击事件功能未从 Fancybox 灯箱内部触发

java - 如何在 JavaScript 中读取 XML 服务器响应?