Javascript MSIE为Ajax请求返回状态代码1223

Javascript MSIE为Ajax请求返回状态代码1223,javascript,ajax,internet-explorer,xmlhttprequest,Javascript,Ajax,Internet Explorer,Xmlhttprequest,我正在使用ajax请求(POST方法)提交一个表单,并检查响应上的HTTP状态代码,看它是否成功 它在Firefox上运行良好,但在MSIE-8上当然不行。提交工作正常,我可以检查我的服务器,确认提交工作正常,服务器响应状态代码为204。同样,firefox正确地给出了请求对象的状态代码204,但IE给出的状态代码是1223 你知道我如何在MSIE中获得准确的状态码吗?下面是提交表单并检查响应的代码 var req = new XMLHttpRequest(); req.open

我正在使用ajax请求(POST方法)提交一个表单,并检查响应上的HTTP状态代码,看它是否成功

它在Firefox上运行良好,但在MSIE-8上当然不行。提交工作正常,我可以检查我的服务器,确认提交工作正常,服务器响应状态代码为204。同样,firefox正确地给出了请求对象的状态代码204,但IE给出的状态代码是1223

你知道我如何在MSIE中获得准确的状态码吗?下面是提交表单并检查响应的代码

    var req = new XMLHttpRequest();
    req.open("POST", "p.php?i=" + self.__isid, true);
    //Send the proper header information along with the request
    req.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    req.setRequestHeader("Content-length", formdata.length);
    req.setRequestHeader("Connection", "close");

    req.onreadystatechange = function()
    {
        if(req.readyState == 4)
        {
            if(req.status == 204 || req.status == 200)
            {
                //Success. Update the feed.
                self.__postFeed.update();
                self.__form.reset();
            }
            else
            {
                //TODO: Better error handling.
                alert("Error submitting post:\n" + req.responseText);
            }
        }
    }
    req.send(formdata);
MSXMLHTTP中的XMLHTTPRequest实现(在 至少在IE 8.0中,Windows XP SP3+不处理HTTP响应 状态代码204(无内容)正确;“status”属性已被删除 该值为1223

这是一个已知的bug,大多数基于javascript的框架都会处理这种情况,并在IE中对1223到204进行规范化

所以你的问题的解决方法是这样的

// Normalize IE's response to HTTP 204 when Win error 1223.
status : (conn.status == 1223) ? 204 : conn.status,
// Normalize IE's statusText to "No Content" instead of "Unknown".
statusText : (conn.status == 1223) ? "No Content" : conn.statusText
参考资料:

道场

原型-

YUI-(HandletTransactionResponse)

JQuery-


ExtJS-

做了更多的实验:如果我让服务器返回200的状态码,那么MSIE工作正常。但如果它是204,它给了我那个疯狂的1223状态。我真的很想坚持使用204,因为这是最合适的响应,所以如果有人能帮我弄清楚如何获得它,我将不胜感激。显然IE在这种情况下也会删除所有响应头!显然,IE9中也有这种情况。。。但它已经在IE10中修复。来源:(ctrl+F代表1223)感谢更新:)很好,它终于被修复了,我想知道为什么他们至少还没有将修复后端口到IE9什么不起作用?您得到的响应是什么状态代码?显然,这也适用于VBA/Excel中使用的MSXML2.XMLHTTP60对象。非常感谢。