我有html页面使用ajax从其他页面提取数据。
代码在firefox上工作正常但在IE和Chrome中的xhr.open(“...”)上提供了拒绝访问权限。
示例代码如下所示。
<!DOCTYPE html>
<html>
<head>
<script type="text/Javascript">
function changeContent(url)
{
var xhr = new XMLHttpRequest();
xhr.open("GET",url,false); //Access denied on this line
xhr.send();
var roster = document.getElementById("roster");
roster.innerHTML=xhr.responseText;
}
</script>
</head>
<body>
<img src=images/logo_990x80.png width=1300" height="80" />
<div class="buttonBar">
<input type="button" value="data" onclick="changeContent('data.html')"/>
</div>
<div id="roster" class="roster">
Click on the buttons above to choose a roster
</div>
</body>
</html>
data.html包含一个包含2行数据的简单表。
如何解决此问题。
编辑:以下显示的代码适用于IE和Firefox,但在Chrome中仍有相同的问题。似乎ActiveX适用于Ajax的本地文件。
<!DOCTYPE html>
<html>
<head>
<script type="text/Javascript">
function changeContent(url)
{
var xhr = false;
if(location.protocol=="file:")
{
if(!xhr)try{ xhr=new ActiveXObject("MSXML2.XMLHTTP"); }catch(e){xhr=false;}
if(!xhr)try{ xhr=new ActiveXObject("Microsoft.XMLHTTP"); }catch(e){xhr=false;}
}
else
{
if(!xhr)try{ xhr=new XMLHttpRequest(); }catch(e){xhr=false;}
}
xhr.open("GET",url,false); //Access denied on this line only in Chrome
xhr.send();
var roster = document.getElementById("roster");
roster.innerHTML=xhr.responseText;
}
</script>
</head>
<body>
<img src=images/logo_990x80.png width=1300" height="80" />
<div class="buttonBar">
<input type="button" value="data" onclick="changeContent('data.html')"/>
</div>
<div id="roster" class="roster">
Click on the buttons above to choose a roster
</div>
</body>
</html>
有关铬的任何提示。
答案 0 :(得分:0)
这通常是在不使用HTTP URI的情况下尝试使用XMLHTTPRequest引起的。
Firefox支持超过file:
方案URI的XHR,大多数浏览器都不支持。
如果要使用Ajax,请通过Web服务器运行页面。