12

AJAX呼び出しが成功したときに実行する関数を渡そうとしていますが、「コールバックは関数ではありません」と表示されているため、機能していません。

例:

市外局番:

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

}

以下の行を関数名自体に置き換えると、次のように機能します。

callback(response);

しかし、渡されたパラメーターから関数名を取得する上記のように機能させることはできません。

4

1 に答える 1

15

showGradesBoxコード内の文字列です。したがって、コールバック関数を実行するための2つのオプションがあります。

文字列を保持したい場合は、使用できます

this[callback](response);

callbackグローバルスコープで定義されている場合は、次を使用することもできますwindow[callback](response);

または、関数を直接渡すことができます。

var callback = showGradesBox;

(この場合、コールバック実行のために既存のコードを保持できます)

于 2013-01-06T18:41:07.007 に答える