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