2011-12-15 56 views
0

原型ajax和setTimeout有問題。這裏是我的代碼縮短:原型ajax,第二個setTimeout後undefined json

//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]未定義。

編輯:看起來像我在第二次超時獲取此錯誤,第一個正確更改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是不夠的,它會消失在某個window.setTimeout函數之後?