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>
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>
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!