在onbeforeunload时执行AJAX函数
在开发聊天应用程序时,经常需要在用户关闭应用程序时执行清理操作浏览器窗口。但是,window.onbeforeunload 事件是异步执行的,因此在页面卸载之前很难执行 AJAX 调用。
要解决此问题,建议在 AJAX 设置中显式设置 async: false。这会强制浏览器等待 AJAX 请求完成后再卸载页面。不过,需要注意的是,这可能并非所有浏览器都支持。
这里是所提供代码的调整版本:
<code class="javascript">window.onbeforeunload = closeSession; function closeSession(){ $.ajax({ url: "/chat/process/chat.php", type: "GET", async: false // Force synchronous execution }); return "disconnected"; }</code>
在 PHP 代码中,删除查询可以像往常一样执行:
<code class="php">$delete= "DELETE FROM queue WHERE id = " . $_SESSION['CHAT_QUEUE_ID']; // query, etc</code>
通过在 AJAX 请求中将 async 设置为 false,可以确保在卸载页面之前删除数据库行,从而提供所需的清理功能。
以上是如何在'onbeforeunload”上执行 AJAX 函数以实现可靠的浏览器窗口关闭清理?的详细内容。更多信息请关注PHP中文网其他相关文章!