在本地html文件中加载带有XMLHttpRequest的“服务器端”文件

时间:2016-04-11 22:05:58

标签: javascript html xmlhttprequest filereader

我想在我的javascript中加载一个json字符串化的文件。 javascript驻留在我从本地文件系统加载的html文件中。

我尝试过使用以下代码:

var xhr = new XMLHttpRequest();
xhr.open('GET', fileName, true);
xhr.responseType = 'blob';  

xhr.onload = function(e) {
  if (this.status == 200) {
    // get binary data as a response
    var blob = this.response;
    alert("Yo");
  }
};

但onload事件只触发一次,状态= 0,然后不再发生。

我尝试使用文件的完整路径以及“/files/the_file.txt”等本地文件路径。

看起来问题与我尝试在本地运行html文件有关。我不想设置一个本地服务器,正如我在这里的类似帖子中所提到的那样。

那里有人解决这个问题吗?

编辑:

这不是我想要的,但这可以用来举例说明我几乎想要它。此示例允许用户选择文件,我的脚本现在可以访问所选文件的内容。

HTML:

<input type="file" id="FancyInputField" onchange="doIt();">

使用Javascript:

function doIt(){
    var selectedFile = document.getElementById('FancyInputField').files[0];

    reader = new FileReader();

    reader.onload = function (e) {
        var output = reader.result;     
        var daObject = JSON.parse(output);
    }

    reader.readAsText(selectedFile);
}

这也适用于本地html文件。 (没有本地服务器)

我的问题是;如何在没有用户交互的情况下读取文件?这些文件位于html文件所在的子文件夹中。我可以毫无问题地加载并使用<img>标记显示来自同一子文件夹的图像。 ..那么为什么加载文本文件如此困难?

2 个答案:

答案 0 :(得分:1)

  

如何在没有用户互动的情况下阅读文件?

你做不到。这些文件属于用户,而不属于您的网站。你不能选择阅读它们。

  

我可以毫无问题地加载并显示来自同一子文件夹的图片,并带有<img>标记

向用户显示图像与使页面作者编写的JavaScript代码可以使用文件内容之间存在很大差异。

  

那么为什么加载文本文件这么困难呢?

  1. 通过电子邮件向某人发送HTML文档
  2. 享受JavaScript,从硬盘中挖掘文件并将其发送给Joe Evil Hacker的服务器
  3. 这只是基本安全。

答案 1 :(得分:0)

使用URL.createObjectURL(file)代替ajax。