【问题标题】:JavaScript & jQuery parse JSON in loopJavaScript & jQuery 循环解析 JSON
【发布时间】:2013-03-13 14:09:03
【问题描述】:

很抱歉问这个问题,即使查看其他问题我也无法解决...

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

    [
       {"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 id="servers"></div>

无论我尝试什么,我总能得到某种结果

“Uncaught TypeError: Cannot read property 'servername' of undefined”错误。

我也想看看结果,但是我什至无法打印 atm。

再次为这样的另一个问题感到抱歉

【问题讨论】:

  • jQuery('#servers').servers.servername 应该做什么???显然,jQuery 对象上没有servers 属性。
  • 嗯,我认为这就是问题所在,我想说的是从解析的数据中获取服务器名称......但不知道该怎么做。
  • 你检查从服务器接收到的数据是否是 json 数组对象?在这种情况下,您需要通过 servers 进行迭代
  • @Alias:响应数据中有两个服务器名。你要哪一个?
  • @Bergi 好吧,我希望它们都一个接一个地显示,但是目前我无法显示任何内容。

标签: javascript jquery html json


【解决方案1】:

你的意思不是这样吗? jQuery 对象(它是对您的 div 的引用)对servername 一无所知。此外,您需要迭代整个项目数组以获取所有项目:

servers = $.parseJSON(data);

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

小提琴:http://jsfiddle.net/H2RC2/1/

【讨论】:

  • servers 没有 servername 属性。
  • 谢谢你,正是我所追求的!
【解决方案2】:

错误消息就是您所需要的。 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 属性。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-28
相关资源
最近更新 更多