【发布时间】:2016-02-26 07:14:49
【问题描述】:
我有这个动态 json 对象
{
"servers":[
{
"comp1":{
"server1":{
"status":"boxup",
"ar":{
"0":"95.61"
},
"ip":{
"0":"192.168.1.0"
}
},
"server2":{
"status":"boxup",
"ar":{
"0":"99.5"
},
"ip":{
"0":"192.168.0.1"
}
}
}
},
{
"comp2":{
"server1":{
"status":"boxup",
"ar":{
"0":"88.39"
},
"ip":{
"0":"198.168.1.1"
}
},
"server2":{
"status":"boxup",
"ar":{
"0":"99.88"
},
"ip":{
"0":"192.168.0.1"
}
}
}
},
{
"comp3":{
"server1":{
"status":"none",
"ar":"none",
"ip":"none"
},
"server2":{
"status":"boxup",
"ar":{
"0":"99.97"
},
"ip":{
"0":"http:\/\/122.01.125.107"
}
}
}
},
{
"comp4":{
"server1":{
"status":"boxup",
"ar":{
"0":"95.64"
},
"ip":{
"0":"192.168.1.0"
}
},
"server2":{
"status":"boxup",
"ar":{
"0":"95.65"
},
"ip":{
"0":"192.168.1.2"
}
}
}
},
{
"comp5":{
"server1":{
"status":"boxup",
"ar":{
"0":"71.92"
},
"ip":{
"0":"192.168.1.0"
}
},
"server2":{
"status":"boxup",
"ar":{
"0":"98.89"
},
"ip":{
"0":"192.168.0.3"
}
}
}
}
]
}
我尝试用 $.each 解析它(请参阅下文)
$.ajax({
url:"/server-monitoring/load-servers",
type:'post',
dataType:'json',
success:function(e){
if(e.success){
$.each(e.servers,function(index,value){
//log the status from server1 on every comp
console.log(value.server1.status);
});
}
}
});
但不幸的是,它返回给我一个错误(请参阅下文)
未捕获的类型错误:无法读取未定义的属性“状态”
有什么帮助、想法、建议、推荐、线索吗?
【问题讨论】:
-
您正在尝试循环一个 json。 json 是一个字符串。您需要将其解析为一个对象,然后循环它
-
你为什么要
e.success?您是否正在尝试检查 ajax 调用是否成功?还是来自服务器的消息成功了? -
因为数组中的每个对象都有一个名为
comp[num]的主键,它是一个对象,其中是包含状态属性的服务器对象。 -
@Reddy,如果
dataType设置正确,jQuery 会自动解析 JSON。无需再次解析。 -
@Andy 。感谢您的信息,
标签: javascript jquery json ajax parsing