2010-08-31 87 views
0

我使用此代码加载文本文件的内容:为什么我无法在jQuery中加载特定的文本文件?

function go(){ 
     //var myFile = "c:/BMCclient.log"; 
     var myFile = "abc.html"; 
     $.get(myFile, function(data) { 
     alert (data); 
      $('#_content').html(data); 
      alert('Load was performed.'); 
      }); 

    } 

myFile = "abc.html";此方法成功执行,但是当我使用 myFile = "c:/BMCclient.log";那么它抛出一个异常:

uncaught exception: [Exception... "Component returned failure code: 0x805e000a [nsIXMLHttpRequest.open]" nsresult: "0x805e000a (<unknown>)" location: "JS frame :: file:///C:/PIC/batch/personal/web/js/jquery/jquery-1.4.2.js :: anonymous :: line 5113" data: no] 

为什么它正在发生?

+0

网站如何使用HTTP GET访问个人计算机上的文件? $ .get('c:/BMCclient.log',函数(数据)无效 – RPM1984 2010-08-31 07:11:35

+0

@RPM:如果它无效,那么它是否应该抛出异常? – 2010-08-31 08:44:50

回答

4

这几乎可以肯定是由于Same Origin Policy for file URLs(强调我的)的一个特定方面。

从Gecko 1.9开始,允许文件只读取某些其他文件。 具体而言,只有当源文件的父目录是目标文件的祖先目录时,文件才能读取其他文件。但是,无法以这种方式加载目录。例如,如果您有一个访问另一个文件bar.html的文件foo.html,则只有当bar.html与foo.html位于同一目录中或者包含在与foo.html相同的目录。

1

Ajax与本地文件系统不兼容,如果您设置了Web服务器,并且使用http://localhost来访问该站点,那么您的运气会更好。
你很幸运HTML文件适合你 - 大多数浏览器都不允许这样做。

0

发生这种情况是因为JavaScript无法访问计算机文件系统中的文件。如果这是可能的,那么JS脚本可能会窃取您的文件数据,而您甚至不知道它的设计是如此。

+1

不完全正确:他正在发出请求本地文件系统 – 2010-08-31 07:11:57

+0

仍然无法通过盘符访问文件 – RaYell 2010-08-31 07:30:54

0

您无法通过使用文件系统寻址JavaScript来加载文件。 $.get是一个HTTP GET请求,它将与服务器(例如本地主机)通信。

+0

确定吗?我认为*这是可能的,不能测试正确的方式。 – 2010-08-31 07:16:58

相关问题