Maison > développement back-end > tutoriel php > Comment exécuter des fonctions AJAX sur « onbeforeunload » pour un nettoyage fiable de la fermeture de la fenêtre du navigateur ?

Comment exécuter des fonctions AJAX sur « onbeforeunload » pour un nettoyage fiable de la fermeture de la fenêtre du navigateur ?

DDD
Libérer: 2024-11-03 18:12:30
original
480 Les gens l'ont consulté

How to Execute AJAX Functions on `onbeforeunload` for Reliable Browser Window Close Cleanup?

Exécution de la fonction AJAX sur onbeforeunload

Lors du développement d'une application de chat, il est souvent nécessaire d'effectuer des actions de nettoyage lorsqu'un utilisateur ferme le fenêtre du navigateur. Cependant, l'événement window.onbeforeunload s'exécute de manière asynchrone, ce qui rend difficile l'exécution des appels AJAX avant le déchargement de la page.

Pour résoudre ce problème, il est recommandé de définir explicitement async: false dans les paramètres AJAX. Cela oblige le navigateur à attendre la fin de la requête AJAX avant de décharger la page. Cependant, il est important de noter que cela peut ne pas être pris en charge dans tous les navigateurs.

Voici une version ajustée du code fourni :

<code class="javascript">window.onbeforeunload = closeSession;
function closeSession(){
    $.ajax({
        url: "/chat/process/chat.php",
        type: "GET",
        async: false // Force synchronous execution
    });
    return "disconnected";
}</code>
Copier après la connexion

Dans le code PHP, la requête de suppression peut être exécuté comme d'habitude :

<code class="php">$delete= "DELETE FROM queue WHERE id = " . $_SESSION['CHAT_QUEUE_ID'];
// query, etc</code>
Copier après la connexion

En définissant async sur false dans la requête AJAX, vous vous assurez que la ligne de la base de données est supprimée avant le déchargement de la page, fournissant ainsi la fonctionnalité de nettoyage souhaitée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal