为什么这不会在以下示例中显示任何内容?
$.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"
}
}
}
}
}
答案 0 :(得分:1)
由于您正在迭代data.glossary
,因此您的第一次迭代具有以下内容:
index == "title"
val == "example glossary";
val.title
只是未定义,但val.GlossDiv.GlossList.GlossEntry.GlossTerm
无法访问,应该在您的控制台中抛出错误。
看起来你不需要$.each
。
答案 1 :(得分:0)
您的每个功能都会被调用两次,一次用于标题,一次用于光泽列表。你使用它的方式看起来像是你希望词汇表是一个数组?