非同期 AJAX 呼び出しと変数リターン
フレームワーク コードを個別のファイルに分割するコンテキストで、リターンがAJAX 経由で呼び出された関数の値にアクセスできませんでした。この混乱は、AJAX 呼び出しの非同期の性質に起因します。
AJAX 呼び出し: 非同期性の説明
AJAX (非同期 JavaScript および XML) 関数は非同期で動作します。これは、AJAX リクエストが行われたとき、リクエストを行った関数は、応答の完了を待たずに実行を続行することを意味します。これにより、AJAX リクエストの進行中に、プログラムの他の部分が並行して実行し続けることができます。
Function Return と AJAX
get_data 関数の場合、成功コールバック関数内の return ステートメントは、関数が呼び出されてもすぐには実行されません。代わりに、AJAX リクエストが完了し、レスポンスが受信された場合にのみ実行されます。
解決策: コールバックの使用
この問題を解決するには、以下を提供する必要があります。 get_data 関数へのコールバック関数。このコールバックは、AJAX リクエストが完了し、応答データが利用可能になったときに実行されます。変更されたコードは次のようになります:
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 リクエストが完了したときのコールバック関数。
以上が非同期 AJAX 呼び出しの戻り値にアクセスするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。