javascript - 如何查询XMLHttpRequest的方法类型?

标签 javascript http networking xmlhttprequest

给定一个 XMLHttpRequest,我如何发现它的请求方法?这对于回调获取有关原始调用的上下文很有用。

xhr = new XMLHttpRequest()
xhr.open('post', 'http://example.com', true)
xhr.??? // should return 'post'

最佳答案

不幸的是,没有标准属性可以告诉您请求的类型。 MDN reference | spec reference

<小时/>

有几个选项可供选择:

  1. 给自己一个包装

  2. 包装 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/

相关文章:

javascript - 我可以在processing.js 上对 Three.js 进行后处理吗?

javascript - babel 中的 boolean 交换不起作用

rest - 为什么/何时使用 IoT 发布/订阅协议(protocol)而不是 RESTful HTTP?

ios - Xcode9无线调试上不了大学网

javascript - 如何同时调整大小和移动 css 分区?

javascript - 如何使用 PHP 打开 Bootstrap 模式?

spring - 如何在 Spring Boot 中从 http 重定向到 https?

http - Ionic 2 - Angular 2 http header 未随请求一起发送

networking - 使用 SSH 隧道接受传入连接

ios - 如何在iOS中查找用户