jQuery递归函数错误

时间:2011-02-18 20:02:08

标签: jquery recursive-query

我正在尝试使以下递归函数工作但仍然收到错误(以下代码):

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以及调用函数(错误)。

有什么想法吗?谢谢!

1 个答案:

答案 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