使用Javascript读取文本文件

使用Javascript读取文本文件,javascript,Javascript,我一直在尝试用Javascript读取文本文件,它工作了,但函数什么也不返回 <!DOCTYPE html> <html> <body> <head> <style> html, body, #map-canvas { height: 100%; margin: 0px; padding: 0px } </style> <script> function loadFile(uri)

我一直在尝试用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>

html,正文,#地图画布{
身高:100%;
边际:0px;
填充:0px
}
函数加载文件(uri){
var r=新的XMLHttpRequest();
r、 打开('GET',uri,true);
r、 onreadystatechange=函数(){
if(r.readyState==4){
textlines=processFile(r.responseText);
}
}
r、 发送(空);
返回文本行;
}
函数processFile(fileContent){
var lines=fileContent.split('\n');
回流线;
}
var line=loadFile('ss.txt');
警报(行[0]);
输出是一个消息对话框,上面写着:未定义。

问题是:

1)
textlines
没有像
var textlines那样定义

2) 当状态为
OK
时,将返回
textlines
,但当您警告该值时,该行似乎在xml请求获取完内容并返回之前执行。因此,当您选中
(==4)
或创建函数并传递
文本行时,应提醒该值,以便仅当设置并准备显示时该值才可用。代码如下[经过测试

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

它的副本不是答案,但是你知道你的脑袋在你的身体里,是吗?在HTML中,也就是说,我并不是在暗示你要抬起头来。试着检查
if(r.readyState==4){
line。检查它是否确实处于状态4。我错误地删除了body开始标记,但这不是问题。当我在loadfile函数中显示内容时,文件被成功读取并显示输出。但是,当我尝试从外部显示内容时,它失败了。非常感谢。它像一个符咒一样工作。大nks:)@user3030465:很高兴提供帮助:)再次感谢,但仍然有一些问题。当我尝试从loadfile函数外部打印值时,没有任何显示!例如:像?你可以像我一样将
文本行
传递给函数,在该函数中对该变量执行任何你想执行的操作?好的,我已经执行了,但我没有执行也可以。文本行不是全局变量吗?当我从外部显示其值时,该值是未定义的。var lines=loadFile('ss.txt');alert(lines);//未定义值alert(textlines);//也未定义值
<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>