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);
しかし、渡されたパラメーターから関数名を取得する上記のように機能させることはできません。
showGradesBox
はコード内の文字列です。したがって、コールバック関数を実行するには2つのオプションがあります。
文字列を保持したい場合は、使用できます
_this[callback](response);
_
(callback
がグローバルスコープで定義されている場合は、window[callback](response);
も使用できます。
または、関数を直接渡すこともできます。
_var callback = showGradesBox;
_
(この場合、コールバック実行のために既存のコードを保持できます)