Panggilan AJAX Asynchronous and Variable Return
Dalam konteks membahagikan kod rangka kerja anda kepada fail berasingan, anda menghadapi isu di mana pengembalian nilai fungsi yang dipanggil melalui AJAX tidak boleh diakses. Kekeliruan ini berpunca daripada sifat tak segerak bagi panggilan AJAX.
Panggilan AJAX: Asynchronity Explained
Fungsi AJAX (Asynchronous JavaScript and XML) beroperasi secara tak segerak. Ini bermakna apabila permintaan AJAX dibuat, fungsi yang membuat permintaan itu tidak menunggu respons selesai sebelum meneruskan pelaksanaan. Ini membenarkan bahagian lain program untuk terus berjalan selari semasa permintaan AJAX sedang dijalankan.
Fungsi Pulangan dan AJAX
Dalam kes fungsi get_data anda, penyataan pulangan dalam fungsi panggil balik kejayaan tidak segera dilaksanakan apabila fungsi dipanggil. Sebaliknya, ia dilaksanakan hanya apabila permintaan AJAX selesai, dan respons telah diterima.
Penyelesaian: Menggunakan Panggilan Balik
Untuk menyelesaikan isu ini, anda harus menyediakan fungsi panggil balik kepada fungsi get_data. Panggilan balik ini akan dilaksanakan apabila permintaan AJAX selesai, dan data respons tersedia. Kod yang diubah suai akan kelihatan seperti ini:
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); } } }); } }
Kod panggilan kemudiannya akan diubah suai untuk dihantar dalam fungsi panggil balik:
get_data(data, destination, function (test) { notice(test); });
Dengan cara ini, data respons boleh dikendalikan dalam fungsi panggil balik apabila permintaan AJAX selesai.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengakses Nilai Pulangan Panggilan AJAX Asynchronous?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!