Passing a callback function to jQuery AJAX success function
27,431
showGradesBox
is a string in your code. So you have two options to execute the callback function:
If you want to keep the string you can use
this[callback](response);
(if callback
is defined in global scope you can also use window[callback](response);
Or you can pass the function directly:
var callback = showGradesBox;
(in this case you can keep your existing code for callback execution)
Author by
Brett
Updated on June 04, 2020Comments
-
Brett almost 4 years
I'm trying to pass in a function to run when the AJAX call is successful, however it's not working as it say's that "callback is not a function".
Example:
Calling Code:
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); } }); }
Now if I replace this line below with the function name itself it works:
callback(response);
But I can't get it to work like above where I get the function name from a passed in parameter.