2011-08-03 129 views
0

我是AJAX的新手,只是想确认一下:如果我将所有代码放在桌面上的文件夹中,并且我使用AJAX在HTML中输出文件内容,有可能通过AJAX访问本地文件或文件应该在服务器上?使用AJAX读取本地文件

我只是测试AJAX功能,第一次和我面临的问题,因为它显示错误“拒绝访问”的js文件

+0

本地文件? ajax请求用于通过HTTP检索资源 – BiAiB

+0

尝试请求相对路径。否则,内容访问策略会阻止您。 –

+0

AJAX的要点是从**客户**发送请求到**服务器** –

回答

1

JavaScript是在客户端的工作,但很少有机会所以它不能够从客户机访问本地文件。

因此,您需要在服务器上显示内容,而不是使用ajax并获取div中的数据以显示客户端。

3

文件访问被禁止在任何浏览器的JavaScript实现的开始。有人可以手动禁用浏览器中的“安全功能”。例如,对于Google Chrome,您必须以--disabled-web-security作为命令行参数来启动可执行文件。 Firefox可以禁用它的about:config

无论如何,如果您要为公众写代码,您完全不能依赖那个。但隧道尽头有光线。 “新”Javascript File API已经在Chrome中可用,其他供应商将很快跟进我猜/希望。该API“正式”允许您的脚本读取本地计算机上的文件。

8

出于安全原因,JavaScript对客户端文件系统的访问权限受到限制 - 考虑您是否希望(别人的)JavaScript读取敏感文档。

即使在试验时最好使用真实的拓扑结构,也可以在服务器上提供服务器的信息,这些信息可以在真实系统中从服务器提供。

建立一个像Apache这样的Web服务器来指向你的开发目录非常简单,所以“服务器”只是你的桌面。因此编辑/测试周期非常快。

+1

我在一个文件夹'my_project'中有我的离线项目。所以,现在我需要从我的index.html文件夹'my_project'请求一个xml文件。我不明白为什么这是安全可变性。如果我将我的项目上传到服务器,并从我的index.html向服务器请求xml文件,为什么它不是?只是好奇。 – Chameleon

+1

@Chameleon:不同的是*谁*正在从该文件夹中读取。在线情况下,* web服务器软件*直接进行读取,客户端正在读取*间接*。如果Web服务器缺乏适当的权限,它也会失败。 – user7116

-1

我希望它有可能使用Ajax在本地访问文件,我使用Mozilla Firefox进行了尝试,并且运行良好。我创建了2个文本文件,并在同一个文件夹中进行调节。这是代码。对不起,如果有任何错误。

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> 
1

如果您只是想要进行测试,您可以尝试在Chrome上禁用Web安全性,然后它应该工作。

相关问题