为什么在下面的例子中不显示任何内容?
$.getJSON('test.json', function (data) {
$.each(data.glossary, function (index, val){
var title = val.title, //"example glossary"
term = val.GlossDiv.GlossList.GlossEntry.GlossTerm; //"Standard Generalized Markup Language"
$('ul#results').append('<li><div class="name">' +this.title+ '</div></li><li><div class="name2">' +term+ '</div></li>');
});
});
我必须遍历对象,以便从复杂的嵌套JSON数据文件中获得某些值,如下所示:
{
"glossary": {
"title": "example glossary",
"GlossDiv": {
"title": "Hello!!",
"GlossList": {
"GlossEntry": {
"ID": "SGML",
"SortAs": "SGML",
"GlossTerm": "Standard Generalized Markup Language",
"Acronym": "SGML",
"Abbrev": "ISO 8879:1986",
"GlossDef": {
"para": "A meta-markup language, used to create markup languages such as DocBook.",
"GlossSeeAlso": ["GML", "XML"]
},
"GlossSee": "markup"
}
}
}
}
}
由于您正在对data.glossary
进行迭代,因此您的第一次迭代具有以下内容:
index == "title"
val == "example glossary";
val.title
是未定义的,但val.GlossDiv.GlossList.GlossEntry.GlossTerm
是不可访问的,应该在控制台中抛出错误。
看起来你不需要$.each
。
您的每个函数将被调用两次,一次用于title,一次用于glosslist。您使用它的方式看起来像您希望glossary是一个数组?