只使用javascript逐行读取文本文件

时间:2016-09-24 22:40:22

标签: javascript html

我不想使用Node.js,FileReader或其他任何exept javascript的解决方案! 开发html页面,我遇到了如下问题: 我通过此过程获得了准确的结果,遗憾的是,该过程会记住第一个登录页面的结果。无论同时更改内容的文本文件,过程都会返回第一个结果。 有人可以提供建议!

var filePath = "../../dir/sub dir/text_file.txt";
function getBackData(filePath){
    var axd, i, artx, txli, tdr;
    if(window.XMLHttpRequest){
        axd = new XMLHttpRequest();
    }else{
        axd = new ActiveXObject("Microsoft.XMLHTTP");
    }
    axd.open('GET', filePath, true);
    axd.onreadystatechange = function(){
        if(axd.readyState == 4 && axd.status == 200){
            artx = axd.responseText;
            txli = artx.split("\n"); 
            for(i = 0; i < txli.length; i++){
                alert(txli[i]);
            }
        }
    }
    axd.send(null);
}

3 个答案:

答案 0 :(得分:0)

这可能是因为浏览器缓存了它。如果发送的参数几乎总是与时间戳不同,则可以禁用缓存。或者您可以尝试使用POST,因为post请求永远不会被缓存。

答案 1 :(得分:0)

您可以尝试:axd setRequestHeader('Cache-Control', 'no-cache');

或尝试:axd.open('GET', filePath+'?_=' + new Date().getTime()), true);这会阻止您的服务器使用现金,因为每个请求都不同。

答案 2 :(得分:0)

您不能直接使用ajax请求本地文件 - 您需要服务器来提供服务。浏览器是沙盒,通常不能打开本地文件。这是一项安全措施 - 想象如果允许任何网站打开您的文件会发生什么!

有多种方法可以为您的图片设置简单的服务器,例如http-server。这允许您直接从所选目录提供文件,如下所示:

npm install -g http-server
http-server path-to-text-files/

然后您可以使用ajax在相对于服务器所服务的路径的正常路径下请求文件,如下所示:

url = "/dir/subdir/text-file.txt";
...
ajax.open('GET', url, true);
...
ajax.send(null);