我创建了一个XML文件,我试图使用我的网络浏览器访问它。 当我使用IE时,脚本工作得很好,一切都很好,但是当我试图在其他浏览器中打开它时,它不起作用。 经过研究,我了解到它来自我在JavaScript的第一行中与微软连接的ActiveX内容 这就是我找到另一个应该自动检查浏览器性质的代码的原因:
<script type="text/javascript">
if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
} else { // code for IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "emp.xml", false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
//function loadXML(xmlFile)
//{
//xmlDoc.async="false";
//xmlDoc.onreadystatechange=verify;
//xmlDoc.load(xmlFile);
//xmlObj=xmlDoc.documentElement;
//}
实际上,只是函数的最后两行足以加载XML文件。编写前两行是为了确保我们稍后可以使用的JavaScript函数来操作XML文件数据,而不对未初始化的对象执行任何功能。因此调用函数* verify() *。
<?php
//function verify()/
//{
// 0 Object is not initialized
// 1 Loading object is loading data
// 2 Loaded object has loaded data
// 3 Data from object can be worked with
// 4 Object completely initialized
//if (xmlDoc.readyState != 4)
// {
// return false;
//}
//}
?>
loadXML('emp.xml');
alert(xmlDoc.childNodes(0).firstChild.text);
alert(xmlDoc.childNodes(3).childNodes(1).firstChild.text);
我得到JScript运行时错误访问被拒绝...该怎么办?
我的新代码:
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","http://www.multimediaprof.com/test/emp.xml",true);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
alert(xmlDoc.childNodes[1].firstChild.text);
</script>
</head>
</html>
答案是JQUERY
,我该如何实施呢?
答案 0 :(得分:1)
问题是您尝试通过file://
协议访问计算机上的文件。这是一种安全风险,大多数浏览器都不允许这样做。
此问题的解决方案是在本地或在线服务器上托管您的文件。
如果您使用的是谷歌浏览器,则可以使用--allow-file-access-from-files
标志运行它以使其正常工作。
编辑:我认为你在这里有语法错误:
alert(xmlDoc.childNodes(0).firstChild.text);
childNodes
对象是一个数组,而不是一个函数。因此,应使用方括号[]
,而不是括号()
。
EDIT2:如果您使用的是jQuery,语法如下:
$.get("file.xml", function(data){
//Your data is accessible through the data variable here!
console.log("Data Loaded: " + data);
});
答案 1 :(得分:1)
<html>
<body>
<script type="text/javascript">
if (window.XMLHttpRequest) {
xhttp = new XMLHttpRequest();
} else // for older IE 5/6
{
xhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xhttp.open("GET", "/Users/kart2006/Desktop/emp.xml", false);
xhttp.send("");
xmlDoc = xhttp.responseXML;
document.write(xmlDoc.documentElement.nodeName + " loaded");
var str = xmlDoc.getElementsByTagName("to")[0].childNodes[0].nodeValue;
alert(str);
</script>
</body>
</html>
XML文件:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- Edited by XMLSpy® -->
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
请记住,我已经在Mac中加载了'emp.xml'文件。在Windows的文件://'
中