从整个下午开始,我正在尝试发送一些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
框中我可以获得所有key
和value
对,但我希望<option>
的值填充{{1} } {和person.id
的文字。
哪个没有发生。
可能是我的JSON数组字符串格式本身不正确。
任何人都可以帮我解决这两段代码吗?
答案 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>
。