ajax リクエストとその応答をキャッチしてログに記録するか、その他の方法で処理するためのコード (Chrome 31.0.1650.63 のコンソールに貼り付けてテスト済み) を次に示します。
(function() {
var proxied = window.XMLHttpRequest.prototype.send;
window.XMLHttpRequest.prototype.send = function() {
console.log( arguments );
//Here is where you can add any code to process the request.
//If you want to pass the Ajax request object, pass the 'pointer' below
var pointer = this
var intervalId = window.setInterval(function(){
if(pointer.readyState != 4){
return;
}
console.log( pointer.responseText );
//Here is where you can add any code to process the response.
//If you want to pass the Ajax request object, pass the 'pointer' below
clearInterval(intervalId);
}, 1);//I found a delay of 1 to be sufficient, modify it as you need.
return proxied.apply(this, [].slice.call(arguments));
};
})();
このコードは、受け入れられた回答で上記の問題を解決します。
send を呼び出した後に onreadystatechange をオーバーライドする可能性があるため、フレームワーク (jQuery など) を使用する場合は機能しない可能性があることに注意してください (jQuery は機能すると思います)。または、send メソッドをオーバーライドすることもできます (ただし、これはほとんどありません)。したがって、それは部分的な解決策です。
「onreadystatechange」コールバックが変更されていないことに依存するのではなく、「readyState」自体を監視するためです。
ここからの回答を適応させました: https://stackoverflow.com/a/7778218/1153227