0

为什么这在以下示例中不显示任何内容?

$.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"
            }
        }
    }
}
} 
4

2 回答 2

1

由于您正在迭代data.glossary,因此您的第一次迭代具有以下内容:

index == "title"
val == "example glossary";

val.title只是未定义,但val.GlossDiv.GlossList.GlossEntry.GlossTerm无法访问,应该在您的控制台中引发错误。

$.each无论如何,您似乎不需要。

于 2013-03-17T13:02:40.127 回答
0

您的每个函数将被调用两次,一次用于标题,一次用于光泽列表。您使用它的方式看起来像您期望词汇表是一个数组?

于 2013-03-17T13:02:31.373 回答