使用Javascript读取文本文件

read a text file using Javascript

本文关键字:文件 取文本 读取 Javascript 使用      更新时间:2023-10-06

我一直在尝试用Javascript读取一个文本文件,它成功了,但函数什么都不返回。

<!DOCTYPE html>
<html>
<body>
<head>
<style>
  html, body, #map-canvas {
    height: 100%;
    margin: 0px;
    padding: 0px
  }
</style>
<script>
function loadFile(uri) {
var r = new XMLHttpRequest();
r.open('GET', uri, true);
r.onreadystatechange = function() {
if (r.readyState == 4) {
textlines=processFile(r.responseText);
}
}
r.send(null);
return textlines;
}
function processFile(fileContent) {
var lines= fileContent.split(''n');
return lines;
}
var lines=loadFile('ss.txt');
alert(lines[0]);
</script> 
</head>

</body>
</html>

输出是一个消息对话框,上面写着:未定义。

问题是:

1) textlines的定义与var textlines; 不同

2) 当状态为OK时,将返回textlines,但当您警告该值时,该行似乎在xml请求完成获取内容并返回之前执行。因此,当您检查(==4)或生成一个函数并传递textlines时,您应该提醒该值,以便它只有在设置好并准备好显示时才可用。代码如下所示[TESTED]

<script>
var textlines;
function processFile(fileContent) {
var lines= fileContent.split(''n');
return lines;
}
function printValue(textlines){
    alert(textlines);
}
function loadFile(uri) {
var r = new XMLHttpRequest();
r.open('GET', uri, true);
r.onreadystatechange = function() {
if (r.readyState == 4) {
textlines =  processFile(r.responseText);
printValue(textlines);
return textlines;
}
}
r.send(null);
return textlines;
}

var lines=loadFile('ss.txt');
</script> 

更新:

如果您想在不生成函数和传递的情况下使用变量textlines,您应该等待一段时间,直到xml请求完成才能获取内容,这样您就可以执行:

<script>
var textlines;
function processFile(fileContent) {
var lines= fileContent.split(''n');
return lines;
}
function loadFile(uri) {
var r = new XMLHttpRequest();
r.open('GET', uri, true);
r.onreadystatechange = function() {
if (r.readyState == 4) {
textlines =  processFile(r.responseText);
return textlines;
}
}
r.send(null);
return textlines;
}

var line=loadFile('ss.txt');
setTimeout(function(){
    alert(textlines);
},100);
</script>