使用下面脚本的AJAX调用在IE11上失败了。它确实适用于IE-6的早期版本(这是旧代码)、7、8和9的可疑版本。它可以在Firefox32.0.1上工作,而且可能可以追溯到2(这是非常老的代码)。
objXML = req.responseXML.documentElement;上的脚本错误,其错误“无法获得未定义或空引用的属性'documentElement‘”。
在调试时,req.responseXML为空,而req.responseText具有预期的XML。对于这个问题,解决方案的中心不是“text/xml”,而是响应类型,但是调试器显示响应类型是正确的“text/xml”。
为什么req.responseXML为空?
var req;
function loadXMLDoc(url)
{
// branch for native XMLHttpRequest object
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send(null);
// branch for IE/Windows ActiveX version
} else if (window.ActiveXObject) {
req = new ActiveXObject("Microsoft.XMLHTTP");
if (req) {
req.onreadystatechange = processReqChange;
req.open("GET", url, true);
req.send();
};
};
};
function processReqChange()
{
// only if req shows "complete"
if (req.readyState == 4) {
// only if "OK"
if (req.status == 200) {
// ...processing statements go here...
//alert(req.responseText);
objXML = req.responseXML.documentElement;
// snip... using response data...
} else {
alert("There was a problem retrieving the XML data:\n\n" + req.statusText);
alert(req.status + "\n\n" + req.responseText);
};
};
};发布于 2014-09-18 11:18:11
结果,内容类型标题被设置了两次。返回XML的经典ASP页面包含以下内容类型的标题、带和大括号样式设置:
Call Response.AddHeader("Content-Type", "text/xml")
Response.ContentType = "text/xml"IE的F12 Developer Tools中网络视图上的汇总选项卡显示了'Type‘as 'text/xml’。details选项卡显示了“Response”中的两个“Content”条目。IE 11不喜欢这个。删除设置内容类型的第一个调用并只留下Response.ContentType = "text/xml"解决了这个问题。
https://stackoverflow.com/questions/25911269
复制相似问题