PUT/DELETE XMLHttpRequest Not Working in Firefox

I am working with javascript cross domain ajax request. my code is working fine on chrome and other devices like android browser and android native app using phonegap. But i was facing issue with Firefox..

Firefox does not support my PUT and DELETE requests. Is there any solution for firefox to make put and delete request to my server.

firefox does support my post and get request. both request working fine.

here is my working code.

    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;
}

For send Put request..

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);

The following is working just fine on Firefox 22.0 (& 23.0 too):

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("");

Here is a jsFiddle: http://jsfiddle.net/qXQtD/

To better understand your situation, please answer the following:

  • What is the data you are trying to send?
  • What are your complete response headers (especially the "Access-Control-Allow-Origin" header)?
  • 链接地址: http://www.djcxy.com/p/41118.html

    上一篇: HTTP协议的PUT和DELETE及其在PHP中的使用

    下一篇: PUT / DELETE XMLHttpRequest在Firefox中不起作用