使用JS从文本文件中读取变量

Read variable from text file using JS

在我的程序中我有一个变量

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();
}

警报功能显示文本,但变量仍未设置,我在第 var level = untangleGame.levels[untangleGame.currentLevel];

行收到错误消息 "Uncaught TypeError: Cannot read property '0' of undefined"

您需要将文本解析为 JSON。

替换此行

untangleGame.levels = client.responseText;

untangleGame.levels = JSON.parse(client.responseText);

而且你需要早点入住if condition

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-condition 之外这样做,您的值可能尚未填充。

试试这个:

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);
}