2011-11-30 13 views
6

私のページでは、一度に同時に多くのajax呼び出しを行うことがあります。アイデアは、データが利用可能になると、すべての要素が更新される(私は呼び出しをキューに入れたくない)ということです。ただし、すべてのajax呼び出しが完了するまで、Webページは要素を更新しないことがあります。更新前にすべてのAJAX呼び出しが完了するのを待つページ

例えば、更新中の画像が4つあります。各画像には、そのデータが利用可能になるとソースを更新する独自のAjaxコールバックがあります。コードは次のようなものになります。

for (var i = 0; i < numPictures; i++){ 
    Dajaxice.Images.load_picture(callback_function, {'pictureId': i}); 
} 

をcallback_functionでは、その準備ができたら、そのUI要素に画像を置く:

imgSnippet = '<img src="' + data.img_source + '"/>' 
$("#" + data.container_id).html(imgSnippet); 

(データはこの関数は、サーバから受信したオブジェクトである)

私はAJAXの機能のためにdajax(djangoのためのプラグイン)を使用しています。サーバー側では、mod_wsgi経由でdjango 1.3を実行しているApache(2.2)があります。

実行すると、一部のajax呼び出しが以前に終了しても(私のサーバー上に表示されます)、最後の呼び出しが戻ってくるまで要素は更新されません。

提案がありますか?

おかげで、

+1

これはhttp://stackoverflow.com/questions/7504264/ajax-simultaneous-loading-of-multiple-imagesの複製で、人々があなたの質問に答えたようです。そうじゃないの? – dyoo

+1

ajax呼び出しは同期していますか?その場合、javascriptコントロールをシステムに戻すまで、画面の更新を取得しないことがあります。 – jfriend00

+0

@dyoo:いいところですが、実際にはそうではありません。私はこれがマルチスレッドのApacheサーバで起こっているのを見ています – Goro

答えて

1

私はすべての画像を保持し、前年比は、サーバから、いつコールバックforeachの画像上昇qを事前に定義されたカウンターでそれらのすべてを得たときに画像を表示する新しい機能を作るために、配列を作る示唆カウンターは写真の数を表示し、カウンターをゼロにして、写真を置く場所にローディングを置くことができます。それらのqllがあなたにwwlithするまで あなたのコードを書いたのは申し訳ありませんが、私はモバイルですおそらく私はあなたのために私の答えが明らかでない場合は、後で投稿します

1

あなたがコールバック関数の内容をでラップすることでこれを解決できるかもしれませんは0または1ミリ秒のタイムアウトで呼び出します。これにより、画面が更新されます。

関連する問題