我正在使用javascript尝试使用xmlhttprequest访问url路径。该代码可以与activexobject正常工作(我不想使用activex对象)。当我尝试使用xmlhttprequest调用它时,它不起作用。它给出一个错误,指出访问被拒绝。我在这里使用IE8版本。我已经尝试了以下解决方法
启用“在Internet中跨域访问数据源选项”
添加受信任的站点
if(src) //scr = templates/mytemplate
{
try{
var xhr= new XMLHttpRequest(); //new ActiveXObject("Microsoft.XMLHTTP"); works fine
xhr.onreadystatechange=function()
{
if(xhr.readyState==4)
{
log.profile(src);
if(xhr.status==200||xhr.status==0)
{
//do some action
}
}
element.html(xhr.responseText);
log.profile(src);
xhr.open("GET",src,true);
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send(null);
}}catch(e){
alert("unable to load templates"+e); // here i am getting error saying acess denaied
}
[这里,您收到访问被拒绝的错误。 看起来您直接尝试在IE浏览器中运行HTML页面。您需要将网页托管在任何Web服务器上。为了进行测试,我将此示例页面托管在IIS服务器上。比您可以尝试从IE访问网页更有助于访问该网页而不会出现此错误。
我尝试使用此示例代码进行测试,并使用IE 11(IE-8文档模式)对其进行了测试。
<!DOCTYPE html>
<html>
<body>
<h2>Using the XMLHttpRequest Object</h2>
<div id="demo">
<button type="button" onclick="loadXMLDoc()">Change Content</button>
</div>
<script>
function loadXMLDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "xmlhttp_info.txt", true);
xhttp.send();
}
</script>
</body>
</html>
输出:
根据我的测试结果,代码在IE-8文档模式下工作正常,因此它也应在IE-8浏览器中工作。