我在javascript AJAX中遇到问题

我在javascript AJAX中遇到问题,ajax,Ajax,文本文件的内容未显示在div标记中 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html> <head> <script type="text/javascript"> function loadXMLDoc() { debugge

文本文件的内容未显示在div标记中

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script type="text/javascript">
    function loadXMLDoc() 
{
    debugger;
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)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","D:\Misc\LearningAJAX\ajax_info.txt",true);
xmlhttp.send();
}
</script>
</head>
<body>

<div id="myDiv"><h2>Let AJAX change this text</h2></div>
<button type="button" onclick="loadXMLDoc()">Change Content</button>

</body>
</html>

函数loadXMLDoc()
{
调试器;
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“myDiv”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”,“D:\Misc\LearningAJAX\ajax\u info.txt”,true);
xmlhttp.send();
}
让AJAX更改此文本
更改内容
而不是

xmlhttp.open("GET","D:\Misc\LearningAJAX\ajax_info.txt",true);
试一试


…但请注意,从加载了
文件://
URL的文档中使用ajax,并检索
文件://
资源,并不是跨浏览器的全部可靠功能。如果您试图使用工作站学习web开发,最好在其上安装web服务器。有很多web服务器(尤其是)将在桌面计算机上运行。

由于安全原因,浏览器不允许您对其他域上的资源或任何本地资源进行AJAX调用。 因此,要让你的例子发挥作用,你必须。将脚本上载到web服务器,并将指向ajax_info.txt的链接更改为绝对或相对或b)。从localhost运行脚本

比如:

xmlhttp.open("GET", "./data/ajax_info.txt", true);

你在哪里运行这个页面?在哪个浏览器中?我在IE或chrome上运行,页面在我的电脑上。路径语法正确吗?Chandan:我省略了其中一个斜杠,但更重要的是,在ajax中使用
file://
URL也是有问题的。强烈建议使用本地安装的web服务器。当我进入调试模式并执行open语句时,会显示访问被拒绝。我无法在Windows Vista上发布网站。这就是问题所在,我不能让它成为web服务器。@Chandan:即使在Vista上,你也可以运行Apache这样的web服务器进行本地开发。再说一次,在不使用web服务器的情况下尝试进行ajax编程是行不通的,浏览器应用于
文件://
的模式与
http://
的资源太不一样了。你能给我推荐一个指导如何安装apache web服务器的网站吗?我不明白为什么它不能从我的本地主机上选择。为什么有必要在web服务器上安装它。当您谈到“localhost”时,您是指在本地运行的web服务器吗?如果是这种情况,那么它将与我前面提到的文件路径的更正一起工作。浏览器不允许您加载本地文件的原因是,任何人都可以创建像您这样的页面,并执行类似于xmlhttp.open的操作(“GET”,“C:\Users\Chandan\AppData\Outlook\passwords.dat”,true);然后将数据发送到某个地方。正如您所看到的,这可能是一个严重的安全问题。这与无法使用JavaScript或HTML控制的值的原因相同。
xmlhttp.open("GET", "./data/ajax_info.txt", true);