」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何在「onbeforeunload」上執行 AJAX 函數以實現可靠的瀏覽器視窗關閉清理?

如何在「onbeforeunload」上執行 AJAX 函數以實現可靠的瀏覽器視窗關閉清理?

發佈於2024-11-14
瀏覽:785

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

在onbeforeunload上執行AJAX函數

在開發聊天應用程式時,經常需要在使用者關閉應用程式時執行清理操作瀏覽器視窗。但是,window.onbeforeunload 事件是非同步執行的,因此在頁面卸載之前很難執行 AJAX 呼叫。

要解決此問題,建議在 AJAX 設定中明確設定 async: false。這會強制瀏覽器等待 AJAX 請求完成後再卸載頁面。不過,需要注意的是,並非所有瀏覽器都支援此功能。

這裡是所提供程式碼的調整版本:

window.onbeforeunload = closeSession;
function closeSession(){
    $.ajax({
        url: "/chat/process/chat.php",
        type: "GET",
        async: false // Force synchronous execution
    });
    return "disconnected";
}

在PHP程式碼中,可以照常執行刪除查詢:

$delete= "DELETE FROM queue WHERE id = " . $_SESSION['CHAT_QUEUE_ID'];
// query, etc

透過在 AJAX 請求中將 async 設為 false,可確保在卸載頁面之前刪除資料庫行,從而提供所需的清理功能。

最新教學 更多>

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3