ホームページ > ウェブフロントエンド > jsチュートリアル > Web ページ上のすべての AJAX リクエストをグローバルにインターセプトできますか?

Web ページ上のすべての AJAX リクエストをグローバルにインターセプトできますか?

Susan Sarandon
リリース: 2024-10-25 04:29:02
オリジナル
374 人が閲覧しました

Can You Intercept All AJAX Requests on a Webpage Globally?

AJAX リクエストをグローバルにインターセプト

質問: すべての AJAX リクエストをインターセプトする「フック」を確立することは可能ですか? Web ページ上で送信前に作成されたのか、それともライフサイクル中に作成されたのか? jQuery または他のフレームワークを使用するサードパーティのスクリプトがページに存在する可能性があると想定されます。

答え: もちろん、コールバックを中断することなく、AJAX リクエストをグローバルにインターセプトする汎用フックを実装できます。サードパーティの AJAX ライブラリによって定義されています。以下に示すコード スニペットを示します。

<code class="javascript">(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>
ログイン後にコピー

このコードは、XMLHttpRequest プロトタイプの open メソッドを変更して、AJAX リクエストが正常に完了したときにトリガーされるロード イベントをリッスンします。このイベント リスナー内で、リクエストとレスポンス情報のログ記録、レスポンス データの操作、リクエストの中止などのカスタム アクションを実行できます。

このアプローチを使用すると、上で行われたすべての AJAX リクエストにフックできます。このページは、使用されている基礎となるフレームワークやライブラリに関係なく、監視、デバッグ、または AJAX 通信との対話のための中心点を提供します。

以上がWeb ページ上のすべての AJAX リクエストをグローバルにインターセプトできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート