准备嵌套的JSON数组并使用jQuery $ .each()检索它

时间:2016-01-30 17:04:55

标签: jquery json

从整个下午开始,我正在尝试发送一些JSON响应并将其捕获为select个选项。 我已尝试以各种方式格式化JSON字符串,以通过jQuery的嵌套each()函数检索它,但无法正确使用它。

现在我的代码看起来像这样:

  

当前JSON字符串格式:

 {
  "person1" : {"id":1, "name":"name1", "dob":"01-Jan-2016"},
  "person2" : {"id":2, "name":"name2", "dob":"02-Jan-2016"},
  "person3" : {"id":3, "name":"name3", "dob":"03-Jan-2016"},
  "person4" : {"id":4, "name":"name4", "dob":"04-Jan-2016"}
 }

我也试过这种格式:

{
"persons" : [
    {"id":1, "name":"name1", "dob":"01-Jan-2016"},
    {"id":2, "name":"name2", "dob":"02-Jan-2016"},
    {"id":3, "name":"name3", "dob":"03-Jan-2016"},
    {"id":4, "name":"name4", "dob":"04-Jan-2016"}
  ]
}
  

JQuery $.get().done()处理程序:

var selectList = $("#personList");
var result = JSON.parse(data);
$.each(result, function(){
     $.each(this, function(key, value){
          alert(key + '=' + value);
          selectList.append($("<options />").val(name).text(value));
     });
 });

现在在alert框中我可以获得所有keyvalue对,但我希望<option>的值填充{{1} } {和person.id的文字。 哪个没有发生。

可能是我的JSON数组字符串格式本身不正确。

任何人都可以帮我解决这两段代码吗?

1 个答案:

答案 0 :(得分:1)

使用当前的JSON格式,在外部$.each()中,this引用人物对象,例如{"id":4, "name":"name4", "dob":"04-Jan-2016"},因此您只需访问其属性:

 $.each(result, function(){
   selectList.append($("<option />").val(this.id).text(this.name));
 });

或者,它作为第二个参数传递,就像它在内部$.each中的方式一样,所以你可以这样做:

 $.each(result, function(key, value){
    selectList.append($("<option />").val(value.id).text(value.name));
 });

顺便说一句,标记为<option>而不是<options>