2010-03-29 101 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