【问题标题】:Why am I unable to load a particular text file in jQuery?为什么我无法在 jQuery 中加载特定的文本文件?
【发布时间】:2010-08-31 07:08:05
【问题描述】:

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

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]

为什么会这样?

【问题讨论】:

  • 网站如何使用 HTTP GET 访问个人计算机上的文件? $.get('c:/BMCclient.log', function(data) 无效。
  • @RPM: 如果它无效,那么它应该抛出这样的异常吗?

标签: jquery file load


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    Ajax 不能很好地与本地文件系统配合使用,如果您设置一个 Web 服务器并使用 http://localhost 访问该站点,您会更好。
    您很幸运 HTML 文件可以为您工作 - 大多数浏览器也不允许这样做。

    【讨论】:

      【解决方案3】:

      发生这种情况是因为 JavaScript 无法访问您计算机文件系统中的文件。如果这是可能的,那么 JS 脚本可能会在你不知情的情况下窃取你的文件数据,所以它就是这样设计的。

      【讨论】:

      • 不完全正确:他正在从本地文件系统发出请求。
      • 仍然无法通过盘符访问文件。
      【解决方案4】:

      您不能通过使用您的文件系统寻址来在 javascript 中加载文件。 $.get 是一个 HTTP GET 请求,它将与服务器(例如在本地主机上)对话。

      【讨论】:

      • 你确定吗?我认为这是可能的。无法正确测试。
      猜你喜欢
      • 2019-03-23
      • 2021-08-26
      • 1970-01-01
      • 2011-04-02
      • 2015-01-01
      • 1970-01-01
      • 2018-07-25
      • 2018-08-15
      • 2016-03-03
      相关资源
      最近更新 更多