gpt4 book ai didi

javascript - AJAX:responseXML 在 IE 11 中为空

转载 作者:行者123 更新时间:2023-11-30 17:17:04 24 4
gpt4 key购买 nike

使用以下脚本的 AJAX 调用在 IE 11 上失败。它适用于早期版本的 IE - 6 肯定(这是旧代码),怀疑是 7、8 和 9。它适用于 Firefox 32.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);
};
};
};

最佳答案

原来 Content-Type header 被设置了两次。返回 XML 的经典 ASP 页面包含以下设置 Content-Type header 、大括号样式:

Call Response.AddHeader("Content-Type", "text/xml")
Response.ContentType = "text/xml"

IE 的 F12 开发人员工具中 WebView 的摘要选项卡将“类型”显示为“文本/xml”。详细信息选项卡在“响应 header ”中显示两个“内容类型”条目。 IE 11 不喜欢这样。删除设置内容类型的第一个调用并仅保留 Response.ContentType = "text/xml" 已解决问题。

关于javascript - AJAX:responseXML 在 IE 11 中为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25911269/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com