Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用AJAX读取本地文件_Javascript_Ajax - Fatal编程技术网

Javascript 使用AJAX读取本地文件

Javascript 使用AJAX读取本地文件,javascript,ajax,Javascript,Ajax,我是AJAX的新手,只想确认一下:如果我把所有代码都放在桌面上的一个文件夹中,并且我正在使用AJAX以HTML格式以div形式输出文件内容,那么是否可以通过AJAX访问本地文件,或者文件必须在服务器上 我只是第一次测试AJAX功能,我面临着一个问题,因为它在.js文件中显示错误“拒绝访问”Javascript在客户端工作,但访问权限有限,因此无法从客户端访问本地文件 因此,您需要在服务器上发布内容,而不是使用ajax并获取div中的数据来显示客户端。在任何浏览器javascript实现中,从一开

我是AJAX的新手,只想确认一下:如果我把所有代码都放在桌面上的一个文件夹中,并且我正在使用AJAX以HTML格式以div形式输出文件内容,那么是否可以通过AJAX访问本地文件,或者文件必须在服务器上


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

Javascript在客户端工作,但访问权限有限,因此无法从客户端访问本地文件


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

在任何浏览器javascript实现中,从一开始就禁止访问文件。有人可以手动禁用浏览器中的“安全功能”。例如,对于Google Chrome,您必须以命令行参数
--禁用的web安全性
启动可执行文件。Firefox可以在其
about:config
中禁用该功能


无论如何,如果你是为公众编写代码的话,你当然不能完全依赖它。但在隧道的尽头是光明的。“新”的Javascript已经在Chrome中提供,我想/希望其他供应商很快会跟进。API“官方”允许您的脚本读取本地机器上的文件。

< P>出于安全原因,JavaScript对客户端文件系统的访问受到限制——考虑是否需要(别人的)JavaScript读取敏感文档。 即使在进行实验时,最好使用真实的拓扑结构,从服务器上提供实际系统中的服务


设置一个web服务器(如Apache)以指向您的开发目录非常容易,因此“服务器”只是伪装成您的桌面。因此,编辑/测试周期非常快

我希望可以使用Ajax在本地访问文件,我在mozilla firefox上试用过,效果很好。我已经创建了两个文本文件,并在同一个文件夹中进行了调整。这是代码。对不起,如果有什么错误

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>
函数getXmlHttpRequestObject(){ if(window.XMLHttpRequest){ 返回新的XMLHttpRequest();//不是IE } else if(window.ActiveXObject){ 返回新的ActiveXObject(“Microsoft.XMLHTTP”);//IE } 否则{ 警报(“您的浏览器不支持XmlHttpRequest对象。最好升级到Firefox。”); } } var receiveReq=getXmlHttpRequestObject(); 函数sayHello(fname){ 如果(receiveReq.readyState==4 | | receiveReq.readyState==0){ 接管人公开(“获取”,fname,true); receiveReq.onreadystatechange=handleSayHello; 接收方发送(空); } } 函数handleSayHello(){ 如果(receiveReq.readyState==4){ document.getElementById('span_result')。innerHTML=receiveReq.responseText; } } 下面是html代码 选择一个文件 file.txt file2.txt Ajax.html
文件的内容将显示在下面


如果您只是想测试它,您可以尝试在chrome上禁用web安全性,然后它应该可以工作。

本地文件?ajax请求用于通过HTTPTry请求相对路径检索资源。否则,内容访问策略将阻止您。AJAX的全部目的是将请求从客户端发送到服务器。我猜abhinav试图简化他的开发环境,这不是一个令人难以置信的概念,但不是最好的方法。如果您的页面是本地的,您可以加载本地文件。我的脱机项目位于“my_project”文件夹中。因此,现在我需要从index.html请求文件夹“my_project”中的xml文件。我不明白为什么这是安全漏洞。如果我将我的项目上传到服务器,并从index.html请求来自服务器的xml文件,为什么它不是?“只是好奇而已。”变色龙:区别在于谁在读那个文件夹。在线情况下,web服务器软件直接读取,客户端间接读取。如果web服务器缺少适当的权限,它也会失败。