Ausführen der AJAX-Funktion auf onbeforeunload
Bei der Entwicklung einer Chat-Anwendung ist es oft notwendig, Bereinigungsaktionen durchzuführen, wenn ein Benutzer die schließt Browserfenster. Allerdings wird das window.onbeforeunload-Ereignis asynchron ausgeführt, was es schwierig macht, AJAX-Aufrufe auszuführen, bevor die Seite entladen wird.
Um dieses Problem zu beheben, wird empfohlen, async: false in den AJAX-Einstellungen explizit festzulegen. Dadurch muss der Browser warten, bis die AJAX-Anfrage abgeschlossen ist, bevor er die Seite entlädt. Es ist jedoch wichtig zu beachten, dass dies möglicherweise nicht in allen Browsern unterstützt wird.
Hier ist eine angepasste Version des bereitgestellten Codes:
window.onbeforeunload = closeSession;
function closeSession(){
$.ajax({
url: "/chat/process/chat.php",
type: "GET",
async: false // Force synchronous execution
});
return "disconnected";
}
Im PHP-Code kann die Löschabfrage wie gewohnt ausgeführt werden:
$delete= "DELETE FROM queue WHERE id = " . $_SESSION['CHAT_QUEUE_ID'];
// query, etc
Indem Sie async in der AJAX-Anfrage auf „false“ setzen, stellen Sie sicher, dass die Datenbankzeile gelöscht wird, bevor die Seite entladen wird, und stellen so die gewünschte Bereinigungsfunktionalität bereit.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3