ホームページ >ウェブフロントエンド >jsチュートリアル >AJAX 関数が変数を返さないのはなぜですか? コールバックを使用して修正するにはどうすればよいですか?
AJAX 関数から変数が返されない
フレームワークを複数のファイルに分割すると、変数が返されない問題が発生する可能性がありますAJAX 関数から。 JS ファイル内では変数は空ではありませんが、メインの実行では空のように見えます。
元の関数パターン:
var lock_get = 0; function get_data(data, destination) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data) { return data; } } }); } };
実行:
var test = get_data(data, destination); notice(test);
元のアプローチでは、get_data 関数は次の結果を返そうとします。 AJAX 呼び出しですが、AJAX の非同期の性質により失敗します。
解決策: コールバックの使用
この問題を解決するには、コールバックを利用できます。コールバック関数を get_data に渡すことで、結果を処理して返すことができます:
function get_data(data, destination, callback) { if (lock_get == 0) { lock_get = 1; $.ajax({ type: "POST", url: destination, async: true, data: data, success: function(data) { lock_get = 0; if (data && callback) { callback(data); } } }); } };
実行 (コールバックあり):
get_data(data, destination, function(test) { notice(test); });
以上がAJAX 関数が変数を返さないのはなぜですか? コールバックを使用して修正するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。