ホームページ >ウェブフロントエンド >jsチュートリアル >カスタム アクションを使用してページ上のすべての AJAX リクエストをインターセプトする方法

カスタム アクションを使用してページ上のすべての AJAX リクエストをインターセプトする方法

Patricia Arquette
Patricia Arquetteオリジナル
2024-10-25 05:49:02936ブラウズ

How to Intercept All AJAX Requests on a Page with Custom Actions?

カスタム アクションを使用したページ上のすべての AJAX リクエストのインターセプト

Q: ページ上のすべての AJAX リクエストを「フック」することは可能ですか?送信前またはイベント中にカスタム アクションを実行するには?

A: はい、次のアプローチで可能です:

AJAX リクエストのインターセプト

ページ上のすべての AJAX リクエストをインターセプトするには、リクエストの開始に使用される XMLHttpRequest オブジェクトの open() メソッドをオーバーライドします。 open() メソッドをインターセプトすることで、リクエストが送信される前にカスタム アクションを実行できます。

AJAX リクエストをインターセプトするコードは次のとおりです:

<code class="js">(function() {
    var origOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function() {
        console.log('request started!');
        this.addEventListener('load', function() {
            console.log('request completed!');
            console.log(this.readyState); //will always be 4 (ajax is completed successfully)
            console.log(this.responseText); //whatever the response was
        });
        origOpen.apply(this, arguments);
    };
})();</code>

上記のコードを実行すると、リクエスト URL のログ記録、ヘッダーの追加、リクエスト データの変更など、必要なアクションを実行できます。

サードパーティ スクリプト

このアプローチは、すべての AJAX 実装で使用される基盤となる XMLHttpRequest オブジェクトをインターセプトするため、jQuery またはその他の AJAX ライブラリを使用するサードパーティ スクリプト。ただし、このアプローチはネイティブのフェッチ API では機能しない可能性があることに注意することが重要です。

追加リソース

AJAX イベントを処理するための addEventListener API の詳細については、以下を参照してください。 https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Monitoring_progress

ブラウザのサポート

このアプローチでは、 Internet Explorer 8 以前では動作しません。

以上がカスタム アクションを使用してページ上のすべての AJAX リクエストをインターセプトする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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