getjson和.each()函数。需要在第二级搜索/循环

时间:2014-07-25 11:49:01

标签: javascript getjson each

以下脚本返回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"
  }
}
}

1 个答案:

答案 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"
    }
  ]