2013-03-17 124 views
0

为什么在以下示例中不显示任何内容?显示遍历对象的JSON值

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

回答

1

既然你遍历data.glossary,你的第一次迭代中有这样的:

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

val.title简直是不确定的,但val.GlossDiv.GlossList.GlossEntry.GlossTerm是无法访问,应该在控制台中抛出一个错误。

无论如何,它看起来并不需要$.each

0

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