我一直在尝试通过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>
输出是一个消息对话框,说明:未定义。
答案 0 :(得分:0)
事情是:
1)textlines
未在var textlines;
2)当状态为textlines
时,将返回OK
,但是当您提醒值时,似乎该行在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>