我有以下代码,并且PUT在Chromium和Chrome中没有出现在服务器端…我想知道,如果浏览器不支持PUT,如何将其更改为POST请求。向后兼容
PUT
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。
error: function(jqXHR, textStatus, errorThrown)
error
在服务器端,我看到REQUEST_METHOD:OPTIONS而不是PUT。
只是为了确认,对于遇到这种情况的任何人……没有编程方式
解决大多数浏览器中缺少PUT和DELETE支持的常见方法是使用HTTP POST隧道。基本上,您使用POST并将真实的VERB添加到 X-HTTP- Method-Override HTTP标头中。在服务上,您检查后者,如果找不到,请使用常规HTTP方法。
有关更多信息,请参见此处。