2011-12-26 10 views
0

解決しよう - ため、私は多くのAJAXの一連の後に「.ajaxStop」を使用してコールバックを発行しようとしているコールバック

関連するJavascriptを台無しにHTMLで単純なミスにリクエストが発行されました。しかし、私のコードは、要求が完了した後にコールバックを呼び出さない。

は、ここに私のコードです:

$.getJSON('https://graph.facebook.com/me/mutualfriends/' + 
       friendArray[i] + "?access_token=" + accessToken, 
     (function(index) { 
for (var i = 0; i < friendArray.length; i++){ 
     return function(dataJSON2) { 
      resultArray = dataJSON2['data']; 

      resultJSON += '"' + friendArray[index] + '"' + ":" + resultArray.length; 

      if (index != friendArray.length - 1){ 
       resultJSON += ","; 
      }else { 
       resultJSON += "}"; 
      } 
     } 
    }) (i));  
} 

$('#messageContainer').ajaxStop(function() { 
    $(this).html(resultJSON); 
}); 

私のAJAX要求のためのコールバックの各が正しくclosuredコールバックに入れているが、私はトリガーするajaxStopメソッドを待つとき、何も起こりません。

+0

この場合には当てはまりませんが、Ajaxリクエストを発行する前に、おそらくあなたのAjaxStopハンドラを登録する必要があります。 – montrealist

+0

有効な点ですが、最後の.getJSONリクエストが作成されるずっと前にajaxStopコールバックが準備されるので、この場合は問題になるとは思えません。 – Vivek

+0

正確には、私はそれが適用されるかどうかに疑問を抱いていたのです。 – montrealist

答えて

0

あなたは範囲とタイミングの問題があります。変数 'resultJSON'は、$.getJSONコールバックメソッド内にのみ存在するため 'スコープ'です。 resultJSON変数を共有することができたとしても、$.getJSONメソッドの非同期性のために変数は$.ajaxStopメソッド内で使用するために時間内に設定されませんでした。

+0

申し訳ありません。 $ .getJSONメソッドの外でresultJSONをインスタンス化したことを示すのを忘れてしまった。だから、私は "setTimeout"を繰り返し作成する必要があります$ .ajaxStopを呼び出しますか? – Vivek