假设我在全球范围内有XMLHttpRequest
的实例
另外,我有两个不相交的范围“A”和“B”。
请求实例request
在全球范围内可用
然后,在范围“A”内定义HTTP方法method
之后,发送请求并在范围“B”内处理其onload
事件。
因此,变量method
在“A”中定义,我无法从“B”访问它。
有没有办法只使用request
实例找到范围“B”中的HTTP方法?
/* Global scope starts */
var request = new XMLHttpRequest();
/* Scope A starts */
var method = 'POST', // or 'GET' - chosen HTTP-method
url = '/some/url';
request.open( method, url, true );
/*
* Scope A ends
*
* [then some code]
*
* Scope B starts
*/
request.send();
request.onload = function() {
/*
* Is there any way
* to find out HTTP-method here?
*/
}
/* Scope B ends */
/* Global scope ends */
答案 0 :(得分:2)
你可以像这样使用XMLHttpRequest.prototype.open
方法修补
XMLHttpRequest.prototype.open = (function(original) {
// in case this code is called twice
if (original.name === 'newOpen') {
return original;
}
return function newOpen(method, url, asyncflag, user, password) {
this.xopen = { method: method, url: url, asyncflag: asyncflag, user: user, password: password };
return original.apply(this, arguments);
}
})(XMLHttpRequest.prototype.open);
然后
request.onload = function() {
console.log(this.xopen.method); // the method used is output
}