2011-02-18 113 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

一切都顯得正如它應該的那樣工作,Firebug只是拋出這個警告。該函數重複自身,發佈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); 
      } 
     } 
    }); 
}; 

這是因爲checkStatus()沒有明確返回任何東西,所以你要調用.delay()undefined

+0

很好,謝謝!有點愚蠢的我使用`.delay()`,當然這是行不通的。再次感謝您的幫助 – NightMICU 2011-02-18 20:19:52