javascript - 如何同步对同一个 URL 的多个 Ajax Post 调用

标签 javascript ajax

我有一个 JavaScript 项目数组,对于每个项目,我必须向 URL 发送 ajax 帖子以获取相应的信息并在容器中显示该信息。代码大致如下:

var data = some_data;
array.forEach(item, idx)=> {
    callAjaxAndUpdate(data, item, $('div#container'+i);
});

Ajax方法很简单

var standardUrl = 'https://example.com/post.php';
function callAjaxAndUpdate(data, item, container) {
    $.ajax({
        url: standardUrl
        data: data,
        type: 'POST',
    }).done(function(res) {
       container.append(res.data);
    }).fail(function(res) {
       container.append(res.responseText);
    }).always(function() {
       container.append('DONE!');
    });
}

但是,这件事整个事情似乎变得阻塞了。我在服务器端记录了时间戳,我可以看到每个项目的 ajax 请求只有在前一个项目完成后才会被触发(始终执行部分)。

有人可以帮我解释一下为什么这个设置是同步的,以及如何使其异步吗?请注意,此脚本是在浏览器中执行,而不是在 NodeJS 上执行。

编辑:事实证明,PHP 后端正在以阻塞方式处理请求。也许 session 是这里的罪魁祸首。我现在就结束这个问题。感谢您的帮助和建议。

最佳答案

尝试默认的 Ajax 异步

var standardUrl = 'https://example.com/post.php';
function callAjaxAndUpdate(data, item, container) {
$.ajax({
    url: standardUrl,
    async: true,
    data: data,
    type: 'POST',
}).done(function(res) {
   container.append(res.data);
}).fail(function(res) {
   container.append(res.responseText);
}).always(function() {
   container.append('DONE!');
});
}

或者你可以在.done方法上调用该方法

关于javascript - 如何同步对同一个 URL 的多个 Ajax Post 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53867861/

相关文章:

javascript - 单击时不呈现模态表单

javascript - 未捕获的类型错误 : Cannot read property 'message' of undefined

jquery - 在 jqueryui ajax 选项卡中使用 Google Table

asp.net - 将多个参数传递给 jQuery ajax 调用

javascript - 使用 JScript 启动应用程序

javascript - 构建对象然后导出它,在 js 中

javascript - 使用形式替换句子中的单词

javascript - 为什么光标、不透明度属性和 onclick 事件处理程序在 IE9 上不起作用

javascript - 面漆/电话间隙导航

javascript - Sharethis 不加载 AJAX