Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Passing a callback function to jQuery AJAX success function

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.

like image 230
Brett Avatar asked Jan 06 '13 18:01

Brett


People also ask

Is ajax successful deprecated?

Yes, it is deprecated in jQuery 1.8 onwards.

What is callback jQuery ajax?

jQuery - ajaxSuccess( callback ) Method The ajaxSuccess( callback ) method attaches a function to be executed whenever an AJAX request completes successfully. This is an Ajax Event.


1 Answers

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)

like image 109
micha Avatar answered Oct 26 '22 03:10

micha