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

reading a text file line by line only with javascript

本文关键字:读取 取文本 文件 逐行 javascript      更新时间:2023-09-26

我不想要使用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);
}

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

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

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

您不允许直接使用ajax请求本地文件,您需要一个服务器来为它们提供服务。浏览器是沙盒式的,通常无法打开本地文件。这是一种安全措施——想象一下,如果任何网站被允许打开你的文件,会发生什么!

有一些方法可以为您的图像设置一个简单的服务器,比如http服务器。这允许您直接从选定的目录中提供文件,如下所示:

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);