ホームページ >ウェブフロントエンド >jsチュートリアル >AJAX 関数が変数を返さないのはなぜですか? コールバックを使用して修正するにはどうすればよいですか?

AJAX 関数が変数を返さないのはなぜですか? コールバックを使用して修正するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-08 20:17:17207ブラウズ

Why Doesn't My AJAX Function Return a Variable, and How Can I Fix It Using Callbacks?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。