单击按钮,Javascript加载/读取文本文件

时间:2017-04-08 09:11:58

标签: javascript jquery

我想使用一个按钮,而不是此输入框来加载文本文件。当我按下按钮时,我想加载一个名为“me.txt”的文本文件而不显示浏览窗口。 (“me.txt”在同一路径中)。反正有吗?

  <input type="file" name="file" id="file">

<script>
document.getElementById('file').onchange = function(){

  var file = this.files[0];

  var reader = new FileReader();
  reader.onload = function(progressEvent){
    var lines = this.result.split('\n');
    for(var line = 0; line < lines.length; line++){
      var wordStr = (lines[line]);
      var index = wordStr.indexOf("=");  // Gets the first index where a space occours
      var word = wordStr.substr(0, index); // Gets the first part
      var meaning = wordStr.substr(index + 1);

      if (word=="a") {
          document.write(meaning);
      }
    }
  };
  reader.readAsText(file);
};
</script>

1 个答案:

答案 0 :(得分:0)

如果用户没有主动选择文件,您将无法从用户的计算机上读取文件;而且你无法知道用户计算机上该文件的真实路径。浏览器非常正确地阻止了这两件事。

  

当我按下按钮时,我想加载一个名为“me.txt”的文本文件而不显示浏览窗口。 (“me.txt”在同一条路径中。)

如果您的意思是me.txt是与此代码运行的HTML页面位于同一路径上的文件,则:

  1. 如果您正在使用Web服务器进程并通过http://https://访问该页面,则可以使用简单的ajax请求来读取该文件,例如:

    $.get("me.txt").then(function(data) {
        // ...use data...
    });
    
  2. 如果您刚刚从本地文件系统(file:/// URL)运行,那么使用本地Web服务器进程会更好更多。但是,如果您必须使用file:///网址,则无法在Chrome中阅读其他本地文件,但您可以在Firefox中使用:

    // NOT allowed from file:/// URLs not work in Chrome; is allowed in Firefox
    $.ajax({
        url: "test.json",
        dataType: "text"
    }).then(function(data) {
        // ...use data here
    });
    

    Firefox会在控制台中报告XML解析错误,但也会为您提供数据。