一尘不染

查看客户端浏览器是否支持PUT / DELETE方法的编程方式

ajax

我有以下代码,并且PUT在Chromium和Chrome中没有出现在服务器端…我想知道,如果浏览器不支持PUT,如何将其更改为POST请求。向后兼容

function do_data(url, action, query) {
try {
    if ($.browser.msie) {
        var xdr = new XDomainRequest();
        if (query !== null) {
            console.log(query);
            xdr.open(action, url + '?' + $.param(query));
        } else {
            xdr.open(action, url);
        }
        xdr.onload = function() {
            var data = $.parseJSON(this.responseText);
            show_data(data);
        };
        xdr.send();
    } else {
        if (query !== null) {
            $.ajax({
                url: url,
                data: query,
                type: action,
                success: function(data) {
                    console.log(data);
                },
                error: function(jqXHR, textStatus, errorThrown) {
                    console.log(textStatus);
                }
            });
        } else {
            console.log(query);
            $.ajax({
                url: url,
                type: action,
                success: function(msg) {
                    console.log(data);
                }
            });
        }
    }
} catch (e) {}
}

使用以上代码,如果我在Chromium / Chrome上使用“ PUT”,error: function(jqXHR, textStatus, errorThrown)则将简单地打印出error

在服务器端,我看到REQUEST_METHOD:OPTIONS而不是PUT。

只是为了确认,对于遇到这种情况的任何人……没有编程方式


阅读 550

收藏
2020-07-26

共1个答案

一尘不染

解决大多数浏览器中缺少PUT和DELETE支持的常见方法是使用HTTP POST隧道。基本上,您使用POST并将真实的VERB添加到 X-HTTP-
Method-Override
HTTP标头中。在服务上,您检查后者,如果找不到,请使用常规HTTP方法。

有关更多信息,请参见此处

2020-07-26