• 締切済み

jQueryで複数ファイル読み込みを検知する方法

jQueryでHTTP通信でjsonファイルを取得する場合、 ファイルが一つだけなら $.ajax({ url: path, type: "GET", dataType: "json", success: function(json, status, xhr) { }, error: function(xhr, status, errorThrown) { }, complete: function(xhr, status) { } }); のようにsuccessコールバックなどでデータを取得すればよいのですが 複数ファイルをajax()により取得し、全てのファイルダウンロードが完了したのを 待ってから処理を走らせたい場合どうすればよいのかわかりません。 任意の型のイベントを発生させて、それに対するハンドラ割り当てができればよいのですが javascriptに不慣れなこともあり、調べてもその方法がわかりませんでした。

みんなの回答

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.1

>任意の型のイベントを発生させて、それに対するハンドラ >割り当てができればよいのですが スクリプト内からイベントを発生させることは可能ですが(↓)、別にイベントを利用しなくてもよいのではないでしょうか? https://developer.mozilla.org/ja/DOM/element.dispatchEvent ajaxの状態を管理する配列かなにかを用意しておいて、リクエストするときに新しいフラグをセット、complete時にそのフラグをリセットするようにしておくとします。 その時に同時に他のフラグが全てリセットされているかをチェックして、全部リセットされていれば『全て完了』と判断してもよいのではないでしょうか。 ajaxのリクエストが時間差をもって行なわれるような場合は、その間に終了している可能性もあるので(それぞれで終了と判断してもよければ問題ありありませんが)、もう少し調整が必要になるのかも。

nisecuroro
質問者

お礼

一応イベントは発生させれるのですね、調査不足でした。 確かにそれぞれでcompleteイベントがあがっているのだからフラグでその情報を管理すればいけますね。 ありがとうございました。