Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用JS从文本文件中读取变量_Javascript_Variables_Text_Set - Fatal编程技术网

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”。变量解开游戏是全局声明的。