2010-11-24 64 views
3

我正在使用ExtJS将XMLHttpRequest发送到不返回responseText的服务,只是204和响应标头TotalNearby。该调用完美地使用Firefox,但在Internet Explorer 8中,两个警报框均为空。我究竟做错了什么?XMLHttpRequest响应在Internet Explorer中没有标题

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

回答

5

据现场http://www.enhanceie.com/ie/bugs.asp这是一个IE 7/8的bug:

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

这里描述 http://dev.jquery.com/ticket/1450, IE中的XMLHTTPRequest对象将 返回一个1223的状态码并且丢掉 所有响应头如果服务器 返回HTTP/204无内容 响应。

这是通过URLMON的内部设计 伪影(绑定返回 操作已中止(1223),如果服务器 返回响应于 请求没有内容)而引起的。

IE8,IE7中的Repros(也可能是之前的 )。

解决方法:将“1223”等效为 至204.注意:在这种情况下,HTTP标头仍为 不可用。

如果您看到空警报,意思是IE没有将状态代码更改为1223,那么该错误的那部分可能已经修复。不过,我会更担心这样的说法:

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

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

+0

幸运的是,我可以改变服务。谢谢! – originalbryan 2010-11-24 23:50:00