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