Rumah >hujung hadapan web >tutorial js >Mengapa Fungsi AJAX Saya Tidak Mengembalikan Pembolehubah, dan Bagaimana Saya Boleh Membetulkannya Menggunakan Panggilan Balik?
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!