Ausführen von AJAX-Funktionen bei BeforeUnload
Bei der Entwicklung von Chat-Anwendungen ist es wichtig, Benutzertrennungen ordnungsgemäß zu handhaben. Eine Methode besteht darin, beim Schließen der Seite durch den Benutzer eine AJAX-Funktion auszuführen, um den entsprechenden Datenbankeintrag zu entfernen.
Im bereitgestellten Code wird das Ereignis onbeforeunload ausgelöst, wenn der Benutzer die Seite schließt, und die Funktion closeSession() wird ausgeführt. Diese Funktion versucht, eine AJAX-Anfrage an chat.php zu senden, um eine SQL-DELETE-Anweisung auszuführen und den Benutzereintrag aus der Warteschlangentabelle zu entfernen. Allerdings ist die Anfrage auf „asynchron“ eingestellt (die Standardeinstellung für jQuery), was dazu führt, dass der Browser weiter entlädt, ohne auf den Abschluss der Anfrage zu warten.
Um dieses Problem zu beheben, sollte die Option „asynchron“ in den AJAX-Einstellungen auf eingestellt werden FALSCH. Dies zwingt den Browser, vor dem Entladen auf den Abschluss der Anfrage zu warten. Es ist jedoch wichtig zu beachten, dass die Verwendung dieses Ansatzes bei verschiedenen Browsern und Versionen möglicherweise nicht immer zuverlässig ist.
Hier ist der geänderte Code, bei dem „async“ auf „false“ gesetzt ist:
<code class="js">window.onbeforeunload = closeSession; function closeSession() { $.ajax({ url: "/chat/process/chat.php", type: "GET", async: false, }); return "disconnected"; }</code>
Durch die Einstellung „async“. auf „false“ setzt, unterbricht der Browser den Entladevorgang, bis die AJAX-Anfrage abgeschlossen ist, und stellt so sicher, dass der Datenbankeintrag des Benutzers nach dem Trennen der Verbindung entfernt wird.
Das obige ist der detaillierte Inhalt vonWie führt man AJAX-Funktionen zuverlässig auf BeforeUnload aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!