ホームページ >バックエンド開発 >PHPチュートリアル >信頼性の高いブラウザ ウィンドウを閉じるクリーンアップのために「onbeforeunload」で AJAX 関数を実行する方法

信頼性の高いブラウザ ウィンドウを閉じるクリーンアップのために「onbeforeunload」で AJAX 関数を実行する方法

DDD
DDDオリジナル
2024-11-03 18:12:30482ブラウズ

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

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。