2011-02-18 9 views
1

나는 다음과 같은 재귀 함수 작업을하지만 (다음 코드) 오류를 수신 유지하기 위해 노력하고 있습니다 :jQuery를 재귀 함수 오류

var checkStatus = function(jobID) { 
     $.ajax({ 
      type: 'post', 
      url: '/admin/process/check-encode-status.php', 
      data: {jobID: jobID}, 
      success: function(data) { 
       if (data == 'processing') { 
       checkStatus(jobID).delay(2000); 
       } else { 
        $("#videoOutput").html(data); 
       } 
      } 
     }); 
    }; 

내가 받고 오전 오류는 다음과 같습니다 checkStatus(jobID) is undefined

모든 것 같습니다 작동해야하므로 방화범이 경고를 던지고 있습니다. 함수 자체를 반복하여 jobID를 게시하고 PHP 스크립트에서 "처리 중"을 수신합니다.

비슷한 스크립트를 사용하여 setTimeout()을 재귀 적으로 사용했지만 jobID를 전달하는 방법을 알지 못했습니다 (오류).

아이디어가 있으십니까? 감사!

답변

3

.delay() 만 제거하면 오류가 해결됩니다. 대신 setTimeout을 사용해야합니다.

var checkStatus = function (jobID) { 
    $.ajax({ 
     type: 'post', 
     url: '/admin/process/check-encode-status.php', 
     data: { 
      jobID: jobID 
     }, 
     success: function (data) { 
      if (data == 'processing') { 
       setTimeout(function() { // <-- send an anonymous function 
        checkStatus(jobID); // <-- that calls checkStatus 
       }, 2000); 
      } else { 
       $("#videoOutput").html(data); 
      } 
     } 
    }); 
}; 

당신이 undefined.delay() 전화를 위해 노력하고, 그래서 checkStatus()가 명시 적으로 아무것도 반환하지 않기 때문입니다.

+0

위대한 작품입니다. 감사합니다. 그런데'.delay()'를 사용하는 멍청한 일종의 것은 당연히 작동하지 않을 것입니다. 도움에 다시 한번 감사드립니다 – NightMICU

+0

@NightMICU : 천만에. – user113716