javascript - 如何将多个 Ajax Post 调用异步到同一个 URL
问题描述
我在 javascript 中有一组项目,对于每个项目,我必须将 ajax 发布到 URL 以获取相应的信息并在容器中显示信息。代码大致如下所示:
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 后端。也许会话是这里的罪魁祸首。我现在要结束这个问题。感谢您的帮助和建议。
解决方案
尝试默认的 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 方法上调用该方法
推荐阅读
- angular - 有什么方法可以直观地通知用户 mat-button-toggle-group 没有设置任何内容?
- node.js - 在 Node.js 中安装车把 npm 包的问题
- windows - Wireshark 自动更新输出文件
- python - 作为 systemd 服务运行时脚本(mouse.get_position)中的分段错误
- python - 在python中将pdf文件转换为docx
- postgresql - 构建一个避免更新一列值的触发器
- c - 环境/宏到 C make 文件的命令行
- r - 如何在闪亮中编辑表列名称并保存表以供进一步分析?
- c++ - 添加元素后如何停止添加到 std::vector
- html - 在 flex-contianer 内连续对齐 flex 项目的问题