给定一个 XMLHttpRequest,我如何发现它的请求方法?这对于回调获取有关原始调用的上下文很有用。
xhr = new XMLHttpRequest()
xhr.open('post', 'http://example.com', true)
xhr.??? // should return 'post'
最佳答案
不幸的是,没有标准属性可以告诉您请求的类型。 MDN reference | spec reference
<小时/>有几个选项可供选择:
给自己一个包装
包装
XMLHttpRequest
本身并添加 Expando 属性,但在目标浏览器上测试测试。
#1 示例:
function xhr(method, url, done) {
var x = {
method: method,
xhr: new HTMLHttpRequest()
};
x.method = method;
x.xhr.onreadystatechange = function() {
if (x.xhr.readyState == 4) {
done(x, x.xhr.status == 200 ? x.xhr.responseText : null);
}
};
x.xhr.open(method, url);
return x;
}
(或者做一个返回 promise 的版本。)
#2 的示例(但是测试测试):
(function() {
var real = XMLHttpRequest;
XMLHttpRequest = function() {
var rv = new real();
rv.open = function(method) {
rv.method = method;
return rv.apply(this, arguments);
};
return rv; // Overrides the standard result of new XMLHttpRequest
};
})();
我不建议这样做。 :-) 包装器在跨浏览器上更加灵活和可靠。
关于javascript - 如何查询XMLHttpRequest的方法类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33894184/