为什么我无法在jQuery中加载特定的文本文件?

时间:2010-08-31 07:08:05

标签: jquery file load

我正在使用此代码加载文本文件的内容:

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]

为什么会这样?

4 个答案:

答案 0 :(得分:4)

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

  

从Gecko 1.9开始,允许文件只读取某些其他文件。 具体来说,只有当原始文件的父目录是目标文件的祖先目录时,文件才能读取另一个文件。但是,无法以这种方式加载目录。

     

例如,如果你有一个访问另一个文件bar.html的文件foo.html,只有当bar.html与foo.html位于同一目录或者包含在同一目录中时,加载才会成功目录为foo.html。

答案 1 :(得分:1)

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

答案 2 :(得分:0)

这种情况正在发生,因为JavaScript无法从您计算机的文件系统访问文件。如果可能的话,那么JS脚本可以窃取你的文件数据而你甚至不知道它的设计就是这样工作。

答案 3 :(得分:0)

您无法通过使用文件系统解决文件来加载javascript中的文件。 $.get HTTP GET请求,它将与服务器通信(例如,在localhost上)。