2009-05-22 12 views
21

jQueryを使用して複数のデータを同時に取得しようとしています。要件の背景には、さまざまなデータビットが利用可能になるまでにさまざまな時間がかかるため、返されるごとに各部分を表示したいと考えています。jQuery:同時のAjaxリクエストを作成することは可能ですか?

問題は、リクエストが「キュー」しているように見えることです。次の要求は、前の要求が返されるまで行われません。広範な読書の後、それはオプション 'async:false'が私の後にあるかもしれないようだが、これは違いがないようだ。

TCP/IPデバッグから、ブラウザが複数の接続を開始しないことがわかります。前の要求が戻ったときに同じ接続を使用します。

私は、同時にデータをロードする多くのサイトを見てきました。明らかに可能ですが、私はこの作業をしようとしています。あなたは(デフォルト)、非同期にしたい

$.ajax({ 
    type: "GET", 
    async: false, 
    url: "foo1.php" 
    }); 
$.ajax({ 
    type: "GET", 
    async: false, 
    url: "foo2.php" 
    }); 
$.ajax({ 
    type: "GET", 
    async: false, 
    url: "foo3.php" 
    }); 
+4

なぜドキュメンテーションを見ませんでしたか?あなたが使用するすべてのオプションの意味を調べておくべきです。 'async:false'はあなたが記述しているものの_opposite_です。 –

答えて

16

は、ここに私のコードです。ブラウザは、任意の時点で2つの要求に制限します。これはHTTP仕様の一部です。 (HTTP 1.1 specification, section 8.1.4

要求をキューに入れることが最適です。

これはFirefoxや他のブラウザでは上書きできることに注意してください。 (しかし、それが標準ではないので、あまり役に立ちません)

+18

ありがとうございます。あなたは私に問題がなかった場所を見つけさせました。これはPHPと、セッションのロックにより同じセッション変数を使用するリクエストを順番に処理する方法に関連していることが分かります(なぜなら、実行中は実行できずに書き込みがロックされないのはなぜか狂っているからです)。とにかく、非常に単純な 'session_write_close()'はすべてを修正しました。 乾杯。 –

+0

とにかく知っておきたいことです。あなたはそれのための参照を投稿できますか? – cgp

+3

@Monty PHPの問題とsession_write_close()を指摘してくれた素晴らしい仕事 - 私の仕事 - ありがとう! – JoshuaDavid

3

ブラウザは2つの同時リクエストに制限されます。キュー・マネージャーを使用したい場合は、次のようにします。 http://www.protofunc.com/scripts/jquery/ajaxManager/

+2

ブラウザの動作は問題ありません。PHPで 'fault'でした。 –

関連する問題