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

各関数は2回呼び出されます。1回はタイトル用、もう1回はグロスリスト用です。使用方法は、用語集が配列であることを期待しているように見えますか?

于 2013-03-17T13:02:31.373 に答える