为什么我的JQuery .ajax请求并不是并行的?

时间:2010-03-29 18:38:45

标签: javascript jquery ajax

我正在尝试使用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”需要一段时间才能完成,我可以在服务器上看到第二个请求在第一个请求完成之前没有进行。

据我所知,我没有任何其他活动请求,所以我认为这对浏览器的最大并行请求数没有问题。我在这里错过了什么吗?

3 个答案:

答案 0 :(得分:13)

jQuery不会对AJAX请求进行排队。如果你确定你没有提出任何其他要求,服务器怎么样?也许它只有一个工人?

编辑:为了确保,我使用脚本对其进行了测试,该脚本向PHP脚本启动2个AJAX POST请求,该脚本会休眠5秒钟。他们没有排队。

答案 1 :(得分:8)

你正在使用php吗?你在使用session_start()吗?会话不能通过多个请求并行打开,他们会一个接一个地等待他们正在做的事情。

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