Rumah > Artikel > hujung hadapan web > Bagaimanakah Saya Boleh Mengendalikan Nilai Pulangan Pembolehubah dengan Betul daripada Panggilan AJAX Asynchronous?
Panggilan AJAX Asynchronous dan Nilai Pulangan Boleh Ubah
Apabila menggunakan AJAX untuk melaksanakan permintaan tak segerak, adalah penting untuk memahami cara nilai pulangan berubah-ubah berfungsi. Dalam senario yang diterangkan, fungsi dalam fail JavaScript yang berasingan sedang membuat panggilan AJAX tetapi nilai yang dikembalikan tidak ditetapkan dengan betul.
Penerangan Isu
Fungsi get_data dalam fail JavaScript yang berasingan melaksanakan permintaan AJAX dan bertujuan untuk mengembalikan data yang diterima daripada pelayan. Walau bagaimanapun, pendekatan ini tidak berfungsi kerana panggilan AJAX adalah tak segerak.
Penjelasan
Panggilan AJAX tak segerak jangan tunggu respons dikembalikan sebelum meneruskan pelaksanaan daripada fungsi panggilan. Dalam kes ini, fungsi get_data kembali sebelum permintaan AJAX selesai, menghasilkan pembolehubah ujian kosong.
Penyelesaian
Untuk menyelesaikan isu ini, kita perlu mengendalikan sifat tak segerak AJAX. Ini boleh dilakukan dengan menyediakan fungsi panggil balik kepada fungsi get_data, yang akan dilaksanakan apabila permintaan AJAX selesai dan data tersedia.
Berikut ialah kod yang dikemas kini:
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); } } }); } }
Penggunaan
Fungsi get_data yang dikemas kini harus dipanggil dengan fungsi panggil balik sebagai yang ketiga hujah:
get_data(data, destination, function(test){ notice(test); });
Dengan menggunakan fungsi panggil balik, kod kini boleh mengendalikan hasil permintaan AJAX apabila ia tersedia.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengendalikan Nilai Pulangan Pembolehubah dengan Betul daripada Panggilan AJAX Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!