Rumah >hujung hadapan web >tutorial js >Mengapa Fungsi AJAX Saya Tidak Mengembalikan Pembolehubah, dan Bagaimana Saya Boleh Membetulkannya Menggunakan Panggilan Balik?

Mengapa Fungsi AJAX Saya Tidak Mengembalikan Pembolehubah, dan Bagaimana Saya Boleh Membetulkannya Menggunakan Panggilan Balik?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-08 20:17:17200semak imbas

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

Pembolehubah Tidak Dikembalikan daripada Fungsi AJAX

Apabila membahagikan rangka kerja kepada berbilang fail, anda mungkin menghadapi masalah di mana pembolehubah tidak dikembalikan daripada fungsi AJAX. Walaupun pembolehubah tidak kosong dalam fail JS, ia kelihatan kosong dalam pelaksanaan utama.

Corak Fungsi Asal:

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

Pelaksanaan:

var test = get_data(data, destination);
notice(test);

Dalam pendekatan asal, fungsi get_data cuba mengembalikan hasil Panggilan AJAX, tetapi gagal kerana sifat tak segerak AJAX.

Penyelesaian: Menggunakan Panggilan Balik

Untuk menyelesaikan isu ini, anda boleh menggunakan panggilan balik. Dengan menghantar fungsi panggil balik untuk get_data, hasilnya boleh dikendalikan dan dikembalikan:

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

Pelaksanaan (dengan Panggilan Balik):

get_data(data, destination, function(test) {
  notice(test);
});

Atas ialah kandungan terperinci Mengapa Fungsi AJAX Saya Tidak Mengembalikan Pembolehubah, dan Bagaimana Saya Boleh Membetulkannya Menggunakan Panggilan Balik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn