1

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

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

有任何想法吗?谢谢!

4

1 回答 1

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

于 2011-02-18T20:09:30.680 回答