Подтвердить что ты не робот

Передача функции обратного вызова функции jQuery AJAX

Я пытаюсь передать функцию, которая запускается при успешном вызове AJAX, однако она не работает, поскольку говорит, что "обратный вызов не является функцией".

Пример:

Код вызова:

getGrades(var);    

JS:

function getGrades(grading_company) {

    // Set file to get results from..
    var loadUrl = "ajax_files/get_grades.php";

    // Set data string
    var dataString = 'gc_id=' + grading_company;

    // Set the callback function to run on success
    var callback = 'showGradesBox';

    // Run the AJAX request
    runAjax(loadUrl, dataString, callback);

}

function showGradesBox(response) {

    // Code here...

}

function runAjax(loadUrl, dataString, callback) {

    jQuery.ajax({
        type: 'GET',
        url: loadUrl,
        data: dataString,
        dataType: 'html',
        error: ajaxError,
        success: function(response) {
            callback(response);
        }
    });    

}

Теперь, если я заменю эту строку ниже именем функции, она работает:

callback(response);

Но я не могу заставить его работать, как описано выше, где я получаю имя функции из переданного параметра.

4b9b3361

Ответ 1

showGradesBox - это строка в коде. Таким образом, у вас есть два варианта выполнения функции обратного вызова:

Если вы хотите сохранить строку, вы можете использовать

this[callback](response);

(если callback определено в глобальной области, вы также можете использовать window[callback](response);

Или вы можете передать функцию напрямую:

var callback = showGradesBox;

(в этом случае вы можете сохранить свой существующий код для выполнения обратного вызова)