我正在尝试使用jQuery并行制作两个ajax请求:
var sources = ["source1", "source2"];
$(sources).each(function() {
var source = this;
$.ajax({
async: true,
type: "POST",
data: {post: "data", in: "here"},
url: "/my/url/" + source,
success: function(data) {
process_result(data);
}
});
});
我从this question获得了基本结构,但我的请求仍未并行进行。 “source1”需要一段时间才能完成,我可以在服务器上看到第二个请求在第一个请求完成之前没有进行。
据我所知,我没有任何其他活动请求,所以我认为这对浏览器的最大并行请求数没有问题。我在这里错过了什么吗?
答案 0 :(得分:13)
jQuery不会对AJAX请求进行排队。如果你确定你没有提出任何其他要求,服务器怎么样?也许它只有一个工人?
编辑:为了确保,我使用脚本对其进行了测试,该脚本向PHP脚本启动2个AJAX POST请求,该脚本会休眠5秒钟。他们没有排队。
答案 1 :(得分:8)
答案 2 :(得分:0)
如果您使用$ .post而不是$ .ajax,该怎么办?这对我有用。
var sources = ["source1", "source2"];
$(sources).each(function() {
var source = this;
$.post("/my/url/" + source, {post:"data", in:"here"}, function(data) {
process_result(data);
});
)};