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,
responseText: self.responseText
};
console.log(response);
} else {
console.log(this.readyState);
}
}, false);
open.call(this, method, uri, async, user, pass);
};
我正在尝试在发送前听XHR。类似于$.ajax
方法中jQuery的beforeSend。
我的目标是在发送之前监听所有XHR。我想最接近的是检查上面的this.readyState === 1
?
上面的代码是否会导致像jQuery这样的ajax库出现故障,因为我在XMLHttpRequest
上使用了原型?
答案 0 :(得分:2)
我正在尝试在发送之前听XHR。
然后尝试欺骗send()
方法,而不是open()
方法。
上面的代码是否会导致像jQuery这样的ajax库出现故障,因为我在XMLHttpRequest上使用了原型?
不,不是真的。只是,
XMLHttpRequest
(特别是IE)XMLHttpRequest
对象(或不支持访问或修改其原型),甚至会失败。undefined
)。要100%确定,请使用return open.apply(this, arguments);
。