0

我有一堆想要在页面上输出的 JSON 数据。我已经看到了很多关于如何设置(并且可以更改它)的变化,我不确定这是我正在做的最好的方式,但它在 JSON linter 中验证。

{
    "data": {

      "typeA": [
        {
          "name":"Thing 1",
          "link":"#"
        },
        {
          "name":"Thing 2",
          "link":"#"
        }
      ],

      "typeB": [
        {
          "name":"Thing iii",
          "link":"#"
        }
      ],
      "typeC": [
        {
          "name":"Thing iv",
          "link":"#"
        }
      ]

    }
}

我试图将这个 JSON 放在它自己的 .js 文件中,但实际上有更多的运气将它保存在文档中(无论如何它是一个单页站点)——“更幸运”我的意思是当我有这种工作时只有A型。

稍后在准备好的文档中,我有以下 jQuery - 执行时告诉我未定义数据。

$.each(data, function(i, v) {
    $('#output').append("<p><a href='" + v.link + "'>" + v.name + "</a></p>");
});

我确定我在这里遗漏了一些重要的东西!我喜欢以下内容:

  1. 关于我需要做些什么才能使其正常工作的一些线索-理想情况下,我可以将 typeA 输出到#Output、typeB 和 typeC 其他地方,例如 #Output2
  2. 对这里起作用的东西或部分的一些定义/术语。我真的不知道我在这里不知道什么,并且很想阅读更多内容!

谢谢

4

2 回答 2

1

在您的情况下,假设data是引用上述对象的变量,您需要迭代,data.data因为外部对象只有一个称为data包含类型的键。

然后类型值 liketypeA再次是一个数组,因此要访问该值,link您需要使用访问数组的第一个索引v[0].link

你需要使用

$.each(data.data, function(i, v) {
    $('#output').append("<p><a href='" + v[0].link + "'>" + v[0].name + "</a></p>");
});

演示:小提琴

于 2013-06-27T04:06:24.790 回答
0

试试beloe代码

$(json['data']).each(function (index, value) {
        for (i in value) {
            $(value[i]).each(function (i, v) {
                alert(v['name']);
                alert(v['link']);
            });
        }
    })

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

于 2013-06-27T04:25:03.227 回答