JavaScript和jQuery如何循环解析JSON

5

非常抱歉,我问这个问题,即使看了其他的问题,我仍然无法让它工作...

我有一个JSON输出在"json.php"中,例如:

    [
       {"serverid":"1","servername":"Server One"},
       {"serverid":"2","servername":"Server Two"}
    ]

我有一个脚本,可以获取数据并将其解析为变量。
var servers;
jQuery.get('json.php', function(data) {
     servers =    JSON.parse(data);
     jQuery('#servers').servers.servername
});

我有一个div来输出结果: ```

我有一个div来输出结果:

```
<div id="servers"></div>

无论我尝试什么,总是会得到一些形式的“未捕获类型错误:无法读取未定义属性'servername'”的错误。我也想查看结果,但目前连打印都无法实现。再次抱歉提出这样的问题。

jQuery('#servers').servers.servername 应该是做什么用的???显然,jQuery 对象上没有 servers 属性。 - Bergi
我认为问题就出在这里,我想说从解析的数据中获取服务器名称...但是我不知道该怎么做。 - Alias
你检查过服务器接收到的数据是否为JSON数组对象了吗?如果是这种情况,你需要遍历“servers”。 - smitrp
@别名: 响应数据中有两个服务器名称。你想要哪一个? - Bergi
@Bergi 嗯,我希望它们都能一个接一个地显示出来,但是目前我无法让任何东西显示出来。 - Alias
2个回答

15

你是不是想要这样做?jQuery对象(指的是你的

标签)对servername一无所知。另外,你需要迭代整个数组以获取所有内容:

servers = $.parseJSON(data);

$.each(servers, function(index, value) {
    $("#servers").text($("#servers").text() + " " + value.servername);
});

Fiddle:http://jsfiddle.net/H2RC2/1/


servers 没有 servername 属性。 - Bergi
谢谢,这正是我想要的! - Alias

6
错误信息就是你所需的。 jQuery('#servers')将#servers div包装在jQuery对象中。而这个对象没有像servers这样的属性。
相反,你可以使用:
    var servers = JSON.parse(data);
    var res = '';
    for(var i = 0; i<servers.length; i++){
        res = res + '<p>' + servers[i].servername +'</p>';
    }

    $('#servers').append(res);

“servers” 没有 “servername” 属性。 - Bergi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接