在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中文網其他相關文章!