当我读取本地文件时,Ajax无法正常工作

好吧,我连续2天都无法解决这个问题。这个问题在这里: http : //www.w3schools.com/ajax/tryit.asp? filenamename = tryajax_xml2在w3schools网站上运行正常。 但是当我在notepad ++中复制并粘贴代码时。 它不起作用。 我已经下载了XML文件。 我读的是AJAX不支持使用本地文件。 我不明白? 我有一个学校使用本地XML文件的协助。 当AJAX不支持使用本地文件时,如何使用本地XML文件和AJAX。 而我从助教那里得到的唯一回应就是我应该使用firefox ……但是没有..它不起作用:Chrome,Internet Explorer,Mozila,Opera ……基本没什么……

我知道这里有类似的东西,但我不能让它起作用。 如果有人知道我怎么能修改这个给定的代码工作localy,我会很感激..感谢提前..

    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 = ""; x = xmlhttp.responseXML.documentElement.getElementsByTagName("CD"); for (i = 0; i < x.length; i++) { txt = txt + ""; xx = x[i].getElementsByTagName("TITLE"); { try { txt = txt + ""; } catch (er) { txt = txt + ""; } } xx = x[i].getElementsByTagName("ARTIST"); { try { txt = txt + ""; } catch (er) { txt = txt + ""; } } txt = txt + ""; } txt = txt + "
TitleArtist
" + xx[0].firstChild.nodeValue + " " + xx[0].firstChild.nodeValue + "
"; document.getElementById('txtCDInfo').innerHTML = txt; } } xmlhttp.open("GET", url, true); xmlhttp.send(); }

您无法使用本地文件。 本地文件系统是沙盒的,例如,您不能双击电子邮件附件中的HTML文档,在浏览器中打开它并将其私有文件上载到发件人的服务器。

如果要在本地测试Ajax,请安装本地Web服务器并通过它进行测试。

该文件可能巧合地位于同一台计算机上,但文件系统无法访问。 它必须由在该计算机上运行的Web服务器访问。

因此,例如,如果您有一个提供以下文件的Web服务器:

 c:\server\web\ 

那么你对该文件的AJAX请求不会是这样的:

 c:\server\web\somefile.xml 

就是这样:

 http://localhost/somefile.xml 

该文件是“本地”的,因为它位于同一台计算机上。 但它不是“本地”的,因为它来自URL,而不是来自文件系统路径。 出于相当明显的安全原因,浏览器不允许JavaScript代码访问文件系统。 (想象一下,任何网站都可以在不询问的情况下读取您计算机上任何文件的世界。)

包含JavaScript代码的HTML页面以及JavaScript代码正在读取的文件都应该从Web服务器提供,而不是从文件系统打开。