我正在尝试使以下递归函数工作但仍然收到错误(以下代码):
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以及调用函数(错误)。
有什么想法吗?谢谢!
答案 0 :(得分: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
。