2011-12-15 2 views
0

프로토 타입 ajax 및 setTimeout에 문제가 있습니다. 여기 내 코드는 단축 :프로토 타입 ajax, 두 번째 setTimeout 이후에 정의되지 않은 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]는 정의되지 않습니다.

EDIT : 두 번째 시간 초과시이 오류가 발생하는 것처럼 보입니다. 첫 번째 오류는 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이 작동 한 후에 어딘가에 사라집니다.