XMLHttpRequest响应在Internet Explorer中没有标头

时间:2010-11-24 16:14:12

标签: javascript extjs xmlhttprequest

我正在使用ExtJS将XMLHttpRequest发送到不返回responseText的服务,只返回204,响应头 TotalNearby 。该调用使用Firefox完美运行,但在Internet Explorer 8中,两个警报框都是空的。我做错了什么?

Ext.Ajax.request({
    url: 'services/getNearby',
    method: 'GET',
    params: {
        'lat': 34,
        'lon': -90
    },
    headers: {
        'Authorization': AUTH_TOKEN
    },
    success: function(response) {
        if (response.status == 204) {
            alert(response.getAllResponseHeaders());
            alert(response.getResponseHeader('Total-Nearby'));
        }
    },
    failure: function(response) {
        alert('Server status ' + response.status);
    }
});

1 个答案:

答案 0 :(得分:4)

根据网站http://www.enhanceie.com/ie/bugs.asp,这是一个IE 7/8错误:

  

IE0013:IE XMLHTTP实现   将204响应代码变为虚假   1223状态代码

     

这里描述   http://dev.jquery.com/ticket/1450,   IE中的XMLHTTPRequest对象会   返回状态代码1223并删除   服务器的所有响应标头   返回HTTP / 204无内容   响应。

     

这是由内部设计引起的   URLMon的工件(绑定返回   操作已中止(1223)服务器   不响应a返回任何内容   请求)。

     

IE8中的Repros,IE7(可能还有   更早)。

     

解决方法:将“1223”视为等效   到204.注意:HTTP标头仍然存在   在这种情况下无法使用。

如果您看到空警报,意味着IE未将状态代码更改为1223,那么该部分错误可能已得到修复。但是,我会更担心声明:

  

注意:在这种情况下,HTTP标头仍然不可用。

因为这似乎是你所面临的问题。您是否需要使用不响应内容的服务?您可能更适合使用消息正文返回典型响应。