PUT/DELETE XMLHttpRequest在Firefox中不起作用

PUT/DELETE XMLHttpRequest Not Working in Firefox

本文关键字:Firefox 不起作用 XMLHttpRequest DELETE PUT      更新时间:2023-09-26

我正在处理javascript跨域ajax请求。我的代码在chrome和其他设备上运行良好,比如使用phonegap的android浏览器和android原生应用程序。但我遇到了火狐的问题。。

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/

为了更好地了解您的情况,请回答以下问题:

  1. 您试图发送的数据是什么
  2. 您的完整响应标头是什么(尤其是"Access Control Allow Origin"标头)