使用AJAX来读取本地文件
我是AJAX的新手,只是想确认:如果我的桌面上的所有代码都放在一个文件夹中,而且我正在使用AJAX以HTML格式输出文件内容,是否可以通过AJAX访问本地文件?文件应该在服务器上?
我只是第一次testing的AJAXfunction,我面临的问题,因为它显示错误“拒绝访问”在.js文件
出于安全原因,JavaScript访问客户端上的文件系统受到限制 – 考虑是否希望(别人的)JavaScript读取敏感文档。
即使在实验中最好使用真实的拓扑结构,也可以在服务器上提供服务器的信息,这些信息将来自真实的系统。
build立一个像Apache这样的Web服务器来指向你的开发目录是非常简单的,所以“服务器”就是你的桌面。 因此编辑/testing周期非常快。
在任何浏览器的JavaScript实现中,文件访问都是被禁止的。 有人可以手动禁用他的浏览器中的“安全function”。 例如,对于Google Chrome,您必须以--disabled-web-security
作为命令行参数来启动可执行文件。 Firefox可以禁用它的about:config
。
无论如何,如果你要为公众写代码,你当然完全不能依赖那个。 但隧道尽头有光。 Chrome的“新”JavaScript File API
已经上市,其他厂商很快就会推出我想/希望。 该API“正式”允许您的脚本读取本地计算机上的文件。
Javascript是在客户端工作,但有限的访问,所以它不能访问来自客户机的本地文件。
所以你需要把你的内容放在服务器上,而不是你可以使用ajax,并获取你的div中的数据来显示客户端。
如果你只是想要testing,你可以尝试禁用铬安全的networking安全,然后它应该工作。
我希望它有可能使用Ajax在本地访问文件,我用mozilla firefox试过,并且运行良好。 我创build了2个文本文件,并在同一个文件夹中find节奏。 这是代码。 对不起,如果有任何错误。
function getXmlHttpRequestObject() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); //Not IE } else if(window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); //IE } else { alert("Your browser doesn't support the XmlHttpRequest object. Better upgrade to Firefox."); } } var receiveReq = getXmlHttpRequestObject(); function sayHello(fname) { if (receiveReq.readyState == 4 || receiveReq.readyState == 0) { receiveReq.open("GET", fname, true); receiveReq.onreadystatechange = handleSayHello; receiveReq.send(null); } } function handleSayHello() { if (receiveReq.readyState == 4) { document.getElementById('span_result').innerHTML = receiveReq.responseText; } } Here is the html code <select name="files" onchange="sayHello(this.value)"> <option value="">Select a file</option> <option value="file.txt">file.txt</option> <option value="file2.txt">file2.txt</option> <option value="ajax.html">Ajax.html</option> </select><br> <p>Contents of the file will be displayed below</p> <div id="span_result"></div>