加载使用XMLHTTP一个XML文件中的IE8

问题描述:

我设计一个在线调查,调查的主要特点是,这些问题在外部存储在XML文件中,每次都被加载随机问题之一。虽然代码我在Firefox精品工程,我得到“访问被拒绝”错误,当我尝试加载该页面在Internet Explorer 8,我已经分离出的问题下面的代码部分:加载使用XMLHTTP一个XML文件中的IE8

//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的安全设置。这是这种情况,还是有更多的呢?

感谢您的帮助。

+0

你在使用“file://”网址吗?如果是的话那可能是问题 - IE并不认为“文件://”页面共享一个域,所以它保护他们免受海誓山盟。 Chrome做同样的事情。 – Pointy 2011-03-24 16:01:25

+0

“个性化导览/ questions.xml”不是有效的网址。不允许有空格。 – Tomalak 2011-03-24 16:07:33

+0

谢谢。问题实际上是“file://”网址,看起来问题现在已经解决了。 – Robert 2011-03-24 17:27:21

对IE,你可以直接在XML文档使用XPath,其他浏览器都通过创建的XPath解析器

所以,选择所有“重大”的元素会是这样:

xmlDoc.selectNodes("//major") 

,但一旦你有[0]索引选择您可以更有效地做到这一点:

xmlDoc.selectSingleNode("//major") 

两者的结果是相当diferent(性能增益旁)

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

但是你可以使用XPath像做最后选择在一个命令:

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

/* [n]的符号是确定的,但如果它们是唯一的或具有节点的两个

组合,您可以添加.noValue,的.text,.textContent,.nodeName您可以使用节点名称如需要