2011-12-15 5 views
0

プロトタイプajaxとsetTimeoutに問題があります。ここに私のコードが短縮されます。プロトタイプajax、未定義json秒後setTimeout

//new ajax request 
....onComplete: function (transport) { //json as this -> array[$i].something 
     var json = transport.responseJSON; 
     var $i = 0; 
     window.setTimeout(function() { 
      SLOW(); 
     }, 
     500); //display every json[$i] with custom delay 
     function SLOW() { 
      $i++; 
      if (json[$i].something !== null) { //insert in proper div id in the html document 
       window.setTimeout(function() { 
        $('document_div' + json[$i].something).innerHTML = json[$i].something_to_display; 
       }, 
       500); 
       window.setTimeout(function() { 
        $('document_div' + json[$i].something).innerHTML = json[$i].something_to_display; 
       }, 
       1000);...window.setTimeout(function() { 
        SLOW(); 
       }, 
       500); 
      } else { 
       //stop and continue 
      } 

はこのエラーを取得:json[$i]は未定義です。

EDIT:このエラーが2回目のタイムアウトになっているように見えます。最初の1つでは、divが正しく変更されています。

答えて

0

完了。

解決策は、setTimeoutで使用する前に再度jsonを再インストールすることでした。

var json_something = json[$i].something; //and so on... 
var json_something_to_display = json[$i].something_to_display 

window.setTimeout(function() {  $('document_div'+json_something).innerHTML = json_something_to_display; }, 500); 

これがなぜ必要なのか誰かが説明できますか?なぜvar ing jsonで十分ではなく、1つ後のどこかで消滅するwindow.setTimeout

関連する問題