2010-03-29 44 views
6

我试图让使用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”需要一段时间才能完成,并且我可以在服务器上看到第二个请求在第一个请求完成之前不会被创建。

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

+0

你在Fiddler或Firebug中看到了什么? – SLaks 2010-03-29 18:40:30

+0

你的后端是什么? – serg 2010-03-29 18:43:53

+0

我刚刚重新尝试从该链接问题中回答问题,并在PHP页面中添加了“睡眠(4)” - 仍按预期工作。所有4个请求一次发射,全部需要4秒钟才能完成。 – 2010-03-29 18:45:42

回答

13

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

编辑:而只是为了确保,我与启动2个AJAX POST请求PHP脚本,睡5秒的脚本进行了测试。他们没有排队。

+1

看起来像服务器相关的问题。 – BYK 2010-03-29 18:50:22

+1

是的,在我的开发沙箱中运行我的web服务器时没有使用--fork选项,所以它一次只能处理一个请求。 – 2010-03-30 12:53:23

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

你使用的是PHP吗?你使用session_start()吗?会话不能由多个请求并行打开,他们会一个接一个地完成他们正在做的事情。

+0

男人,我爱你!!!!!!完全忘了这个,直到你的帖子失去了3个小时;-(法国南部很感谢^^ – 2013-01-17 20:53:53

相关问题