在我解释我的问题之前,我将在这里放置我的Json代码以方便理解。
{
"name": "Servers Rotation",
"version": 1.0,
"prefix": ".svr",
"servers": {
"server1": {
"svr": "01x",
"status": 1,
"type": "all"
},
"server2": {
"svr": "02p",
"status": 1,
"type": "all"
},
"server3": {
"svr": "03z",
"status": 1,
"type": "all"
}
}
}
现在,我正在访问此JSON,并尝试创建一个循环以验证所有服务器(server1,server2,server3)的状态是否与数字1相匹配。
如果server [num]状态等于1,则启用服务器。
$.getJSON("servers.json", function(json) {
var servers_available = Object.keys(json.servers).length;
for(i = 1; i <= servers_available; i++) {
if (json.servers.server+i.status == 1) {
alert(servers_prefix+i.svr + " enabled!");
} else {
alert(servers_prefix+i.svr + " disabled");
}
}
});
但是,我收到NaN
作为警报响应。
我在做什么错?你能帮助我吗?谢谢。
答案 0 :(得分:1)
您在这里犯了三个错误:
json.servers.server+i.status
。在这里您应该使用Bracket Notation。即json.servers['server'+i].status
servers_prefix
的{{1}} undefined
。您应该先使用i
。这是代码
let
您可以通过使用以下简单方法来实现:
$.getJSON("servers.json", function(json) {
var servers_available = Object.keys(json.servers).length;
for(let i = 1; i <= servers_available; i++) {
if (json.servers['server'+i].status == 1) {
alert(json.servers['server'+i].svr + " enabled!");
} else {
alert(json.servers['server'+i].svr + " disabled");
}
}
});
上的{li> forEach()
,而不是Object.values()
Object.keys()
和status属性
svr
答案 1 :(得分:0)
尝试这个
$.getJSON("servers.json", function(json) {
var servers_available = Object.keys(json.servers).length;
for(i = 1; i <= servers_available; i++) {
if (json.servers["server"+i].status == 1) {
alert(servers_prefix+i.svr + " enabled!");
} else {
alert(servers_prefix+i.svr + " disabled");
}
}
});
答案 2 :(得分:0)
使用括号符号
var json={
"name": "Servers Rotation",
"version": 1.0,
"prefix": ".svr",
"servers": {
"server1": {
"svr": "01x",
"status": 1,
"type": "all"
},
"server2": {
"svr": "02p",
"status": 1,
"type": "all"
},
"server3": {
"svr": "03z",
"status": 1,
"type": "all"
}
}
}
var servers_available = Object.keys(json.servers);
for(i = 1; i <=servers_available.length; i++) {
var a='server'+i;
if (json.servers[a].status == 1) {
alert(json.servers[a].svr + " enabled!");
} else {
alert(json.servers[a].svr + " disabled");
}
}