programing

매개 변수가 포함된 콜백 함수를 전달하시겠습니까?

codeshow 2023. 8. 10. 21:45
반응형

매개 변수가 포함된 콜백 함수를 전달하시겠습니까?

나는 아래 코드를 가지고 있습니다.

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);
};

다른 가능성은 하는 대신에dataString하다, 하다, 하다, 하다, 하다, 하다, 하다, 하다, 나다dataObject그런 다음 해당 개체를 콜백으로 전달합니다.이와 같은 경우:

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 object
        var dataObject = {
            'gc_id' : grading_company
            /*to do multiples..
            'item1' : value1, 
            'item2' : value2, 
            'etc' : etc */
        }

        // Set the callback function to run on success
        var callback = showGradesBox;

        // Run the AJAX request
        runAjax(loadUrl, dataObject, callback);  

    }

}

function runAjax(loadUrl, dataObject, callback) {

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

}

의 추가 내용에 유의하십시오.$.param().

그러면 콜백 기능에서는 어떤 데이터를 찾고 있는지 알아야 합니다. 만약에.function setGrades(resp, data) { ... }콜백을 한 다음 의 값에 액세스할 수 있습니다.setGrades

function setGrades(resp, data) {
   alert( data.gc_id);
}

편집

테스트 후에, 저는 그것을 깨달았습니다.$(dataObject).serialize()작동하지 않습니다.그래서 사용하도록 업데이트했습니다.$.param()자세한 내용은 이 SO 게시물을 참조하십시오.

언급URL : https://stackoverflow.com/questions/14200021/passing-a-callback-function-with-included-parameters

반응형