javascript – 传递包含参数的回调函数?

参见英文答案 > Pass an extra argument to a callback function                                    3答案                            我有下面的代码..

function getGrades(grading_company) {

    if (grading_company == 'Not Specified') {

        // Remove grades box & show condition box
        showConditionBox();

    } else {

        // 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 runAjax(loadUrl, dataString, callback) {

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

}

编辑:这是被称为回调函数的函数:

function showGradesBox(response) {

    // Load data into grade field
    jQuery('#grade').html(response);

    // Hide condition fields
    jQuery('#condition').hide();
    jQuery('#condition_text').hide();

    // Show grade fields
    jQuery('#grade_wrapper').show();
    jQuery('#grade_text_wrapper').show();    

}

现在,如果我想将grading_company变量传递给回调函数作为参数,那么有没有办法,而不必将其添加为runAjax调用中的另一个参数?我试图保持runAjax函数打开其他用法,所以我不想传递任何额外的参数;但是如果它可以以某种方式被包含在回调中,那么很好。

将您的回调更改为匿名函数:

// Set the callback function to run on success
var callback = function () {
    showGradesBox(grading_company);
};

这允许您将参数传递给内部函数。

编辑:允许ajax响应:

// Set the callback function to run on success
var callback = function (response) {
    showGradesBox(grading_company, response);
};
http://stackoverflow.com/questions/14200021/passing-a-callback-function-with-included-parameters

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – 传递包含参数的回调函数?