Getjson和.each()函数.需要搜索/循环在第二层

getjson and .each() function. Need to search/loop on 2nd level

本文关键字:搜索 循环 第二层 each 函数 Getjson      更新时间:2023-09-26

下面的脚本返回2个警报(F3和S1)。我需要4个警报(F1, F2, F3和S1) -这是所有服务的主机名。

我猜每个函数都在创建一个不包含双元组的数组-所以它只给我一个-最后一个F3。

如何获得所有业务的host_names ?我不能更改输入的数据。

脚本:

 <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输出:

{
"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"
  }
}
}

在JSON String的同一层中不能有多个相同的索引。例如:尝试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需要返回'services'数组:

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