次のコードを使用して、XMLHttpRequest の open/send メソッドにフックしています。
var lastParams = '';
var send = XMLHttpRequest.prototype.send;
XMLHttpRequest.prototype.send = function(data){
lastParams = data;
send.call(this, data);
};
var open = XMLHttpRequest.prototype.open;
XMLHttpRequest.prototype.open = function(method, uri, async, user, pass) {
this.addEventListener("readystatechange", function(event) {
if(this.readyState == 4){
var self = this;
var response = {
method: method,
uri: uri,
params: lastParams,
responseText: self.responseText
};
console.log(response);
}
}, false);
open.call(this, method, uri, async, user, pass);
};
一度に単一の ajax リクエストの場合は正常に機能しています。
一度に複数の ajax リクエストが起動されると、lastParams に間違ったデータが含まれる可能性があります (lastParams に他の ajax リクエストからのデータが含まれる可能性があることを意味します)。lastParams をリクエストの他の属性と一意に関連付けたいですか?
ajaxリクエストインスタンスを一意に識別できるように、XMLHttpRequestにid属性はありますか?
前もって感謝します。