Ошибка рекурсивной функции jQuery - PullRequest
1 голос
/ 18 февраля 2011

Я пытаюсь заставить работать следующую рекурсивную функцию, но продолжаю получать сообщение об ошибке (следующий код):

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 Ответ

3 голосов
/ 18 февраля 2011

Просто удалите .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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...