PUT / DELETE XMLHttpRequest在Firefox中不起作用
我正在使用javascript跨域ajax请求。 我的代码在Chrome和其他设备(如使用phonegap的android浏览器和android原生应用)上工作正常。 但我面对的问题与Firefox ..
Firefox不支持我的PUT和DELETE请求。 是否有任何解决方案让Firefox向我的服务器发出请求和删除请求。
Firefox支持我的文章并获取请求。 这两个请求工作正常。
这是我的工作代码。
var XMLHttpFactories = [
function () {
return new XMLHttpRequest()
},
function () {
return new ActiveXObject("Msxml2.XMLHTTP")
},
function () {
return new ActiveXObject("Msxml3.XMLHTTP")
},
function () {
return new ActiveXObject("Microsoft.XMLHTTP")
}
];
function createXMLHTTPObject() {
var xmlhttp = false;
for (var i=0;i<XMLHttpFactories.length;i++) {
try {
xmlhttp = XMLHttpFactories[i]();
}
catch (e) {
continue;
}
break;
}
return xmlhttp;
}
用于发送Put请求..
var xhr = createXMLHTTPObject();
xhr.open("PUT", url,true);
xhr.onreadystatechange=function()
{
if (xhr.readyState==4)
{
if(xhr.status==200){
request.success(xhr.responseText);
}else if(xhr.status!=200){
request.error(xhr.responseText)
}
}
}
xhr.send(body);
以下在Firefox 22.0(&23.0)上运行良好:
var XMLHttpFactories = [
function () {
return new XMLHttpRequest()
},
function () {
return new ActiveXObject("Msxml2.XMLHTTP")
},
function () {
return new ActiveXObject("Msxml3.XMLHTTP")
},
function () {
return new ActiveXObject("Microsoft.XMLHTTP")
}
];
function createXMLHTTPObject() {
var xmlhttp = false;
for (var i=0;i<XMLHttpFactories.length;i++) {
try {
xmlhttp = XMLHttpFactories[i]();
}
catch (e) {
continue;
}
break;
}
return xmlhttp;
}
var xhr = createXMLHTTPObject();
xhr.open("PUT", "/echo/html/", true);
xhr.onreadystatechange = function()
{
if (xhr.readyState == 4)
alert("Request completed, with the following status code: " + xhr.status);
}
xhr.send("");
这里是一个jsFiddle:http://jsfiddle.net/qXQtD/
为了更好地了解您的情况,请回答以下问题:
上一篇: PUT/DELETE XMLHttpRequest Not Working in Firefox
下一篇: Why don't the modern browsers support PUT and DELETE form methods?