Javascript 使用JS从文本文件中读取变量
在我的程序中,我有一个变量Javascript 使用JS从文本文件中读取变量,javascript,variables,text,set,Javascript,Variables,Text,Set,在我的程序中,我有一个变量 untangleGame.levels = [ { "level" : 0, "circles" : [{"x" : 400, "y" : 156}, {"x" : 381, "y" : 241}, {"x" : 84, "y" : 233}, {"x" : 88, "y" : 73}], "relationship" : { "0" : {"connectedPoints" : [1,2]}, "1" : {"connectedPoints"
untangleGame.levels =
[
{
"level" : 0,
"circles" : [{"x" : 400, "y" : 156},
{"x" : 381, "y" : 241},
{"x" : 84, "y" : 233},
{"x" : 88, "y" : 73}],
"relationship" : {
"0" : {"connectedPoints" : [1,2]},
"1" : {"connectedPoints" : [0,3]},
"2" : {"connectedPoints" : [0,3]},
"3" : {"connectedPoints" : [1,2]}
}
},////////****** More Levels****///////
]
我必须将这个变量存储在文本文件中。我创建了一个函数
function loadDoc() {
var client = new XMLHttpRequest();
client.open('GET', '/KB/canvasAts/levels.txt');
client.onreadystatechange = function() {
if (client.readyState == 4 && client.status == 200)
{
untangleGame.levels = JSON. parse (client.responseText) ;
}
}
client.send();
}
Alert函数显示文本,但变量仍未设置,我在
var level=untangleGame.levels[untangleGame.currentLevel]行中收到错误消息“Uncaught TypeError:无法读取未定义的属性“0”代码>您需要将文本解析为JSON
更换这条线
untangleGame.levels = client.responseText;
与
如果条件满足,您需要保持在更早的
if (client.readyState == 4 && client.status == 200)
{
alert(client.responseText);
untangleGame.levels = JSON. parse (client.responseText) ;
}
你犯了一个错误
Uncaught TypeError: Cannot read property '0' of undefined
因为如果您在外部执行此操作,那么您的值可能尚未填充,此时if条件as client.responseText可能为空。您需要将文本解析为JSON
更换这条线
untangleGame.levels = client.responseText;
与
如果条件满足,您需要保持在更早的
if (client.readyState == 4 && client.status == 200)
{
alert(client.responseText);
untangleGame.levels = JSON. parse (client.responseText) ;
}
你犯了一个错误
Uncaught TypeError: Cannot read property '0' of undefined
因为如果您在作为client.responseText的if条件之外执行此操作,则您的值可能尚未填充。此时,if条件可能为空。请尝试以下操作:
loadDoc('/KB/canvasAts/levels.txt', function (response) {
untangleGame.levels = JSON.parse(response) ;
});
function loadDoc(fileName, callback) {
var client = new XMLHttpRequest();
client.overrideMimeType("application/json");
client.open('GET', fileName, true);
client.onreadystatechange = function () {
if (client.readyState == 4 && client.status == "200") {
callback(client.responseText);
}
};
client.send(null);
}
试试这个:
loadDoc('/KB/canvasAts/levels.txt', function (response) {
untangleGame.levels = JSON.parse(response) ;
});
function loadDoc(fileName, callback) {
var client = new XMLHttpRequest();
client.overrideMimeType("application/json");
client.open('GET', fileName, true);
client.onreadystatechange = function () {
if (client.readyState == 4 && client.status == "200") {
callback(client.responseText);
}
};
client.send(null);
}
1-您显示的代码中没有这样的行。第二级-client.responseText
和untangleGame.levels
是文本,而不是您试图访问的数组第1级-您显示的代码中没有这样的行。第二-client.responseText
和untangleGame.levels
是文本,而不是您试图访问的数组。我仍然会收到相同的错误。正如我所说,如果我将设置为alert(client.responseText)代码>它向我显示正确的信息,但是如果我写,例如,警报(解开游戏.levels.circles[1].x)代码>,它向我显示未捕获类型错误:无法读取未定义的属性“1”
已尝试,相同。我不确定我的想法是否正确。此时,我将untangleGame.levels=[…]
替换为untangleGame.levels=loadDoc()代码>,函数是:function loadDoc(){var client=new XMLHttpRequest();client.open('GET','/KB/canvasAts/levels.txt');client.onreadystatechange=function(){if(client.readyState==4&&client.status==200){temp=JSON.parse(client.responseText);}}client.send();return temp;}
对不起,注释中看起来真的很混乱..您不能从异步方法返回。更新您的方法,以显示您迄今为止为合并我的建议所做的尝试。@Unholyan在做出我建议的更改后,您得到了什么错误以及在哪一行?txt文件有错误-JSON无法读取它。在loadDoc()
函数中alert()
函数向我显示正确的信息。但是,如果我在调用主函数中的loadDoc()
函数后将alert()
放入,则会显示错误无法读取未定义的的属性“0”。变量untangleGame是全局声明的。我仍然得到相同的错误。正如我所说,如果我将设置为alert(client.responseText)代码>它向我显示正确的信息,但是如果我写,例如,警报(解开游戏.levels.circles[1].x)代码>,它向我显示未捕获类型错误:无法读取未定义的属性“1”
已尝试,相同。我不确定我的想法是否正确。此时,我将untangleGame.levels=[…]
替换为untangleGame.levels=loadDoc()代码>,函数是:function loadDoc(){var client=new XMLHttpRequest();client.open('GET','/KB/canvasAts/levels.txt');client.onreadystatechange=function(){if(client.readyState==4&&client.status==200){temp=JSON.parse(client.responseText);}}client.send();return temp;}
对不起,注释中看起来真的很混乱..您不能从异步方法返回。更新您的方法,以显示您迄今为止为合并我的建议所做的尝试。@Unholyan在做出我建议的更改后,您得到了什么错误以及在哪一行?txt文件有错误-JSON无法读取它。在loadDoc()
函数中alert()
函数向我显示正确的信息。但是,如果我在调用主函数中的loadDoc()
函数后将alert()
放入,则会显示错误无法读取未定义的的属性“0”。变量解开游戏是全局声明的。