1

TLDR:

  1. 从这个问题开始,在得到一些工作并在这里继续之后简化了它。
  2. 我需要“获取” JSON 数组
  3. 正确格式化并为数组中的每个将其放在相应的 DIV 中。
  4. ??
  5. 有用。

这是这个问题的后续,以简化和继续。

我需要从数组中获取一些复杂的 JSON 数据。有了它,我需要标题和它的价值。我这样做的原因是因为我会知道数组的名称,但不知道其中生成的数据。

假设这个新数组如下所示:

{
  "Days": [{
      "day": "Sunday",
      "time": "10.00"
    },
    {
      "day": "Monday",
      "time": "12.00"
    },
    {
      "day": "Tuesday",
      "time": "09.00"
    },
    {
      "day": "Wednesday",
      "time": "10.00"
    },
    {
      "day": "Thursday",
      "time": "02.00"
    },
    {
      "day": "Friday",
      "time": "05.00"
    },
    {
      "day": "Saturday",
      "time": "08.00"
    }
  ]
}

修复感谢 (Matthew Flaschen)

我需要它来获得周日和 10.00 以及所有其他人的相同。

我目前解析这个的代码如下:

$.getJSON(url,
  function(data) {
    $.each(data, function(i, item) {
      $('.testfield').append('<p>' + item + '</p>');
    });
  });

如果没有在每个日期添加时间,它将按如下方式解析数据:

Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday

随着时间添加到数组中的天数,Firebug 不再将其识别为 JSON 字符串。所以我猜我在这里格式化了一些错误的东西。此外,我需要每天和时间都在一个新的线路上,我认为

$('.testfield').append('<p>' + item + '</p>' + '<br />');

本来可以将每个应用到一个新行,但那不起作用。

  1. 我如何让每一天或每一项目都在一个新的行上?
  2. 如何让 $getjson 将数据正确解析为日期及其值,并将其转换为 div?
4

3 回答 3

2

试试这个(重新格式化的 JSON - 下次用JSONLint检查你的 JSON ):

{
    "Days": [
        {
            "Sunday": "10.00",
            "Monday": "12.00",
            "Tuesday": "09.00",
            "Wednesday": "10.00",
            "Thursday": "02.00",
            "Friday": "05.00",
            "Saturday": "08.00" 
        }
    ]
}

使用它的脚本:

 $.getJSON( url, function(data){
  $.each(data.Days[0], function(key,value){
   $('.testfield').append('<p>' + key + ' : ' + value + '</p>');
  });
 });
于 2010-04-29T05:55:00.790 回答
1

那不是有效的 JSON。执行以下操作:

{"Days":
[{"day": "Sunday", "time": "10.00"},
 {"day": "Monday", "time": "12.00"},
 {"day": "Tuesday", "time": "09.00"},
 {"day": "Wednesday", "time": "10.00"},
 {"day": "Thursday", "time": "02.00"},
 {"day": "Friday", "time": "05.00"},
 {"day": "Saturday", "time": "08.00"}
]}

始终使用JSONLint或其他验证器来检查您的语法。

于 2010-04-29T05:44:02.110 回答
0

有点离题,但如果你不确定内容,你应该使用安全的方法将数据插入 DOM。否则你的代码有 XSS 漏洞。

除了是一个安全问题之外,任何诸如“Foo Bar <foo.bar@example.com>”之类的数据都不会按照您(可能)想要的方式呈现。

例如,您可以使用 jQuery text() 方法:

$('.testfield').append($('<p></p>').text(item));
于 2010-04-29T05:51:54.653 回答