首頁 >web前端 >js教程 >為什麼我的 AJAX 函數不傳回變量,如何使用回調修復它?

為什麼我的 AJAX 函數不傳回變量,如何使用回調修復它?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-08 20:17:17197瀏覽

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

在原始函數中,getdata_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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn