Melaksanakan Fungsi AJAX pada onbeforeunload
Dalam membangunkan aplikasi sembang, selalunya perlu melakukan tindakan pembersihan apabila pengguna menutup tetingkap pelayar. Walau bagaimanapun, acara window.onbeforeunload dilaksanakan secara tak segerak, menjadikannya sukar untuk melaksanakan panggilan AJAX sebelum halaman dipunggah.
Untuk menyelesaikan isu ini, adalah disyorkan untuk menetapkan async: false secara eksplisit dalam tetapan AJAX. Ini memaksa penyemak imbas untuk menunggu permintaan AJAX selesai sebelum memunggah halaman. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa ini mungkin tidak disokong dalam semua penyemak imbas.
Berikut ialah versi pelarasan kod yang disediakan:
<code class="javascript">window.onbeforeunload = closeSession; function closeSession(){ $.ajax({ url: "/chat/process/chat.php", type: "GET", async: false // Force synchronous execution }); return "disconnected"; }</code>
Dalam kod PHP, pertanyaan pemadaman boleh dilaksanakan seperti biasa:
<code class="php">$delete= "DELETE FROM queue WHERE id = " . $_SESSION['CHAT_QUEUE_ID']; // query, etc</code>
Dengan menetapkan async kepada false dalam permintaan AJAX, anda memastikan bahawa baris pangkalan data dipadamkan sebelum halaman dipunggah, menyediakan fungsi pembersihan yang diingini.
Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Fungsi AJAX pada `onbeforeunload` untuk Pembersihan Tutup Tetingkap Penyemak Imbas yang Boleh Dipercayai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!