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)

Share:
27,431
Brett
Author by

Brett

Updated on June 04, 2020

Comments

  • Brett
    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.