【发布时间】:2013-03-25 07:01:58
【问题描述】:
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(url)
{
var xmlhttp;
var txt,x,xx,i;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
txt="<table border='1'><tr><th>Author</th><th>Title</th></tr>";
x=xmlhttp.responseXML.documentElement.getElementsByTagName("book");
for (i=0;i<x.length;i++)
{
txt=txt + "<tr>";
xx=x[i].getElementsByTagName("author");
{
try
{
txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";
}
catch (er)
{
txt=txt + "<td> </td>";
}
}
xx=x[i].getElementsByTagName("title");
{
try
{
txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";
}
catch (er)
{
txt=txt + "<td> </td>";
}
}
txt=txt + "</tr>";
}
txt=txt + "</table>";
document.getElementById('txtCDInfo').innerHTML=txt;
}
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="txtCDInfo">
<button onclick="loadXMLDoc('http://localhost:8081/sample.xml')">GetDetails</button>
</div>
</body>
</html>
我已经写了上面的代码行来显示 xml 文件数据。它被部署在 iis 服务器中。每当我想访问 xml 文件时,它都会显示上面的错误。我在哪里做错了。我必须写什么在获取 xml 文件的 url 位置。如果我只写像 sample.xml 这样的文件名。它显示像 Access denied 这样的错误。
【问题讨论】:
-
页面是否也在 8081 端口提供服务?
-
no.only xml 页面放置在 iis 服务器中。并且 .html 保存在本地驱动器中。
-
html 和 xml 必须来自同一个服务器(技术上相同的 url 域,可以是不同的机器)。在您的情况下,该页面有一个文件 url,而 xml 有 localhost:8081 url,因此由于域不同,浏览器将不允许您使用 xmlhttprequest。此外,xmlhttprequest 不能与文件 url 一起使用(不能不修改高级浏览器设置,也不能与所有浏览器一起使用)
-
我强烈建议您阅读 Chamika 的答案,因为它是正确答案。
标签: javascript iis