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
Lepaskan: 2024-12-08 20:17:17
asal
206 orang telah melayarinya

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;
        }
      }
    });
  }
};
Salin selepas log masuk

Pelaksanaan:

var test = get_data(data, destination);
notice(test);
Salin selepas log masuk

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);
        }
      }
    });
  }
};
Salin selepas log masuk

Pelaksanaan (dengan Panggilan Balik):

get_data(data, destination, function(test) {
  notice(test);
});
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan