Передача функции обратного вызова функции 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);
Но я не могу заставить его работать, как описано выше, где я получаю имя функции из переданного параметра.
Ответы
Ответ 1
showGradesBox
- это строка в коде. Таким образом, у вас есть два варианта выполнения функции обратного вызова:
Если вы хотите сохранить строку, вы можете использовать
this[callback](response);
(если callback
определено в глобальной области, вы также можете использовать window[callback](response);
Или вы можете передать функцию напрямую:
var callback = showGradesBox;
(в этом случае вы можете сохранить свой существующий код для выполнения обратного вызова)