Javascript - 逐行读取文本文件。使用什么浏览器是否重要?

时间:2014-07-06 18:11:31

标签: javascript jquery web-services mobile file-io

我刚开始接触Javascript和移动网络编程。我不确定的一件事是我如何编写在任何浏览器上运行的正确代码,而不会让最终用户对其结尾有任何额外要求(使用什么浏览器)。

我在Google Chrome中编码,最近在c9.io中编码。

我认为这样可行:

 function readTextFile(file) 
 {
     var client = new XMLHttpRequest();
     client.open('GET', file);
     client.send();
     client.onreadystatechange = function() {
         alert(client.responseText);
     }
 }

但是我得到了XMLHTTpRequest未定义的错误。我一直在试图弄清楚为什么会这样,而且我一直在寻找不支持这种情况的不同浏览器。我认为简单的文件不会那么困难,但它给我带来了比我希望的更多麻烦。

输入文本文件的最佳方法是什么?这是一个没有写入任何内容的文本文件。只读。最终用户没有选择此文本文件,它应该是唯一的选择。

2 个答案:

答案 0 :(得分:1)

代码中的顺序错误,send方法应该是最后一个;否则,你的代码很好,它应该可以在所有现代浏览器中正常工作。提到的订单问题,或者可能是导致该错误的其他因素(之前)。下面的代码段还会将收到的文本拆分为文本行数组

var xhr, i, text, lines;
if(window.XMLHttpRequest){
    // IE7+, Firefox, Chrome, Opera, Safari
    xhr = new XMLHttpRequest();
}else{
    // IE5, IE6  - next line supports these dinosaurs
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
xhr.onreadystatechange = function(){
    if(xhr.readyState == 4 && xhr.status == 200){
        text = xhr.responseText;
        lines = text.split("\n"); 
        for(i = 0; i < lines.length; i++){ 
            console.log(lines[i]); 
        }
    }
}
xhr.open('GET', 'http://domain/file.txt', true);
xhr.send();

答案 1 :(得分:0)

旧版浏览器不支持XMLHTTpRequest。尝试这样做也支持旧浏览器:

var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }