以下脚本返回2个警报(F3和S1)。 我需要4个警报(F1,F2,F3和S1) - 这是所有服务的主机名。
我猜每个函数都在创建一个不包含doublets的数组 - 所以它只给我一个 - 最后一个F3。
如何获得所有服务的host_names
?我无法更改输入数据。
SCRIPT:
<script>
$(function () {
var status = [];
$.ajaxSetup({
cache: false
});
$.getJSON('status.php', function (data) {
$.each(data.services, function (i, f) {
alert(f.host_name);
});
});
});
</script>
来自status.php的OUPUT:
{
"hosts": {
"modified_host": "0",
"modified_serv": "0"
},
"services": {
"HTTPS": {
"host_name": "F1",
"service_description": "HTTPS"
},
"HTTPS": {
"host_name": "F2",
"service_description": "HTTPS"
},
"HTTPS": {
"host_name": "F3",
"service_description": "HTTPS"
},
"HTTP": {
"host_name": "S1",
"service_description": "HTTP"
}
}
}
答案 0 :(得分:0)
您在JSON字符串的同一级别中不能有多个相同的索引。例如:尝试JSONLint你的字符串,你会得到:
{
"hosts": {
"modified_host": "0",
"modified_serv": "0"
},
"services": {
"HTTPS": {
"host_name": "F3",
"service_description": "HTTPS"
},
"HTTP": {
"host_name": "S1",
"service_description": "HTTP"
}
}
}
JSON.parse() - 由$ .getJSON调用(我猜) - 返回。
您的status.php
需要为&#39;服务&#39; :
"services": [{
"host_name" : "F1",
"service_description": "HTTPS"
}, {
"host_name" : "F2",
"service_description": "HTTPS"
}, {
"host_name" : "F3",
"service_description": "HTTPS"
}, {
"host_name" : "S1",
"service_description": "HTTP"
}
]