javascript - 在 IE8 中使用 xmlhttp 加载 XML 文件

标签 javascript internet-explorer-8 xmlhttprequest xmldom

我正在设计一个在线调查,其主要特点之一是问题存储在外部 XML 文件中,每次都会加载随机问题。虽然我的代码在 Firefox 中运行良好,但当我尝试在 Internet Explorer 8 中加载页面时出现“访问被拒绝”错误。我已将问题隔离到以下代码部分:

//Import the XML File
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
    xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5*/
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

//Import XML
xmlhttp.open("POST","Personalized Tour/questions.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

特别是,错误似乎是在 xmlhttp.open 上抛出的。我查看了其他几个类似问题的网站,它们似乎表明存在某种域错误触发了 IE8 的安全设置。是这种情况,还是有更多的原因?

感谢您的帮助。

最佳答案

在 IE 上你可以直接在 xml 文档上使用 XPATH,其他浏览器通过创建一个 xpath 解析器来实现

所以,选择所有“主要”元素就像:

xmlDoc.selectNodes("//major")

但是一旦你有了 [0] 索引选择器,你就可以更有效地完成它:

xmlDoc.selectSingleNode("//major")

两者的结果完全不同(除了性能提升之外)

selectNodes 将返回节点列表(该列表不是 dom 部分) selectSingleNode 将返回第一个节点(不是列表)

但是您可以使用 xpath 在一个命令中完成最终选择,例如:

xmlDoc.selectSingleNode("//major/*[1]/*[9]/*[0]")

/*[n] 符号是可以的,但如果它们是唯一的或两者的组合,您可以使用节点名称

有了节点,您可以根据需要添加 .noValue、.text、.textContent、.nodeName

关于javascript - 在 IE8 中使用 xmlhttp 加载 XML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5421986/

相关文章:

javascript - 什么时候在闭包中使用 typedef?

javascript - Blockly 中不寻常的 JavaScript for 循环与 xml

css - 既然有升级推送,我们能不能少担心 IE 6 的问题?

jquery - ie8 样式表中的媒体查询

javascript - 在 Node js 后端使用 FormData 和 XmlHttpRequest 上传文件并使用 Formidable 显示空文件、字段

javascript - 通过 XHR 将 blob 数据从客户端发送到 NodeJS 服务器

javascript - JS : TypeError: Cannot find function keys in object

javascript - 我想要替换 JSON 中的对象数量 第 7 个对象数量 我该如何替换?

css - IE7-8 渐变和更少的 css

html - http请求正文是什么意思?