$ .each返回' undefined不是对象'

时间:2015-05-25 09:57:03

标签: javascript jquery arrays json loops

我有以下问题。

我已设置此JSON Feed:https://api.myjson.com/bins/1ukdk

我试图遍历源代码,最终输出到html。

$.getJSON('https://api.myjson.com/bins/1ukdk', function (tabledata) {
        var items = []; 
        console.log(tabledata);
        //To get category name
        var categoryName = tabledata.Categorie;    
        var title, advertisement, day;
        $.each(tabledata.titles, function () {
                title = this;
                //to get title name and value
                var titleName = title.Naam,
                        titleValue = title.Waarde;
                $.each(title.advertisements, function(){
                        advertisement = this;
                        //to get advertisement name
                        var advertisementName = advertisement.Naam;                
                        $.each(advertisement.days, function(){
                                day = this;
                                //to get date
                                var advertisementDay = day.Datum;     
                        });
                });        
        });
        //$(items.join('')).appendTo('table');
});

当我输出(tabledata)到控制台时,我得到了这个对象,在数组中填充了对象(我猜这没关系。)

但是,我在$ .each函数上遇到了这个错误:

TypeError: undefined is not an object (evaluating 'e.length')

我似乎无法理解这个问题。看来我无法直接解决表data.titles。任何帮助/建议?

谢谢!

3 个答案:

答案 0 :(得分:0)

您的Feed正在返回一组对象。您可以通过直接访问第一个数组项来遍历标题。

$.each(tabledata[0].titles, function () {

答案 1 :(得分:0)

我看了一下你的JSON响应。您的代码无效的原因是因为tabledata本身是Array,但您将其视为其中的第一个对象。

如果您真的只对第一个元素感兴趣,请使用tabledata[0]来访问它。如果您对每个可能的元素感兴趣,则需要迭代tabledata并处理数组中的每个元素。

答案 2 :(得分:0)

您的JSON解析存在一些问题

实际JSON看起来像这样

    protected CryptoKoreanSeed() {
        koreanSeedKey = (KoreanSEEDKey) KeyBuilder.buildKey(KeyBuilder.TYPE_KOREAN_SEED, KeyBuilder.LENGTH_KOREAN_SEED_128, NO_EXTERNAL_ACCESS);
        register();   
    }

解析我们得到的是这个

[{
        "Categorie" : "Tijdschrift",
        "Aantal scans" : 1200,
        "Aantal bestellingen" : 729,
        "Conversie" : "61%",
        "Waarde" : 3608.55,
        "titles" : [{
                "Naam" : "Libelle",
                "Aantal Aantal scans" : 214,
                "Aantal bestelingen" : 118,
                "Waarde" : 1089.33,
                "advertisements" : [{
                        "id" : 0,
                        "Advertentie" : "Wasmachine 3",
                        "Aantal Aantal scans" : 400,
                        "Aantal bestellingen" : 243,
                        "Conversie" : "61%",
                        "Waarde" : 1202.85,
                        "days" : [{
                                "Datum" : "8 mei",
                                "Aantal scans" : 20,
                                "Aantal bestellingen" : 11,
                                "Waarde" : 99
                            }, {
                                "Datum" : "9 mei",
                                "Aantal scans" : 88,
                                "Aantal bestellingen" : 42,
                                "Waarde" : 435.6
                            }, {
                                "Datum" : "10 mei",
                                "Aantal scans" : 76,
                                "Aantal bestellingen" : 43,
                                "Waarde" : 376.2
                            }, {
                                "Datum" : "11 mei",
                                "Aantal scans" : 30,
                                "Aantal bestellingen" : 22,
                                "Waarde" : 148.5
                            }
                        ]
                    }, {
                        "id" : 1,
                        "Advertentie" : "Anders",
                        "Aantal scans" : 400,
                        "Aantal bestellingen" : 243,
                        "conversion" : "61%",
                        "Waarde" : 1202.85,
                        "days" : [{
                                "Datum" : "8 mei",
                                "Aantal scans" : 20,
                                "Aantal bestellingen" : 11,
                                "Waarde" : 99
                            }, {
                                "Datum" : "9 mei",
                                "Aantal scans" : 88,
                                "Aantal bestellingen" : 42,
                                "Waarde" : 435.6
                            }, {
                                "Datum" : "10 mei",
                                "Aantal scans" : 76,
                                "Aantal bestellingen" : 43,
                                "Waarde" : 376.2
                            }, {
                                "Datum" : "11 mei",
                                "Aantal scans" : 30,
                                "Aantal bestellingen" : 22,
                                "Waarde" : 148.5
                            }
                        ]
                    }, {
                        "id" : 2,
                        "Advertentie" : "Wasmachine 4",
                        "Aantal scans" : 400,
                        "Aantal bestellingen" : 243,
                        "conversion" : "61%",
                        "Waarde" : 1202.85,
                        "days" : [{
                                "Datum" : "8 mei",
                                "Aantal scans" : 20,
                                "Aantal bestellingen" : 11,
                                "Waarde" : 99
                            }, {
                                "Datum" : "9 mei",
                                "Aantal scans" : 88,
                                "Aantal bestellingen" : 42,
                                "Waarde" : 435.6
                            }, {
                                "Datum" : "10 mei",
                                "Aantal scans" : 76,
                                "Aantal bestellingen" : 43,
                                "Waarde" : 376.2
                            }, {
                                "Datum" : "11 mei",
                                "Aantal scans" : 30,
                                "Aantal bestellingen" : 22,
                                "Waarde" : 148.5
                            }
                        ]
                    }
                ]
            }, {
                "Advertentie" : "Beau Monde",
                "Aantal scans" : 782,
                "Aantal bestellingen" : 33,
                "Waarde" : 9238.33,
                "advertisements" : [{
                        "id" : 0,
                        "Advertentie" : "Wasmachine 3",
                        "Aantal scans" : 400,
                        "Aantal bestellingen" : 243,
                        "conversion" : "61%",
                        "Waarde" : 1202.85,
                        "days" : [{
                                "Datum" : "8 mei",
                                "Aantal scans" : 20,
                                "Aantal bestellingen" : 11,
                                "Waarde" : 99
                            }, {
                                "Datum" : "9 mei",
                                "Aantal scans" : 88,
                                "Aantal bestellingen" : 42,
                                "Waarde" : 435.6
                            }, {
                                "Datum" : "10 mei",
                                "Aantal scans" : 76,
                                "Aantal bestellingen" : 43,
                                "Waarde" : 376.2
                            }, {
                                "Datum" : "11 mei",
                                "Aantal scans" : 30,
                                "Aantal bestellingen" : 22,
                                "Waarde" : 148.5
                            }
                        ]
                    }, {
                        "id" : 1,
                        "Advertentie" : "Anders",
                        "Aantal scans" : 400,
                        "Aantal bestellingen" : 243,
                        "conversion" : "61%",
                        "Waarde" : 1202.85,
                        "days" : [{
                                "Datum" : "8 mei",
                                "Aantal scans" : 20,
                                "Aantal bestellingen" : 11,
                                "Waarde" : 99
                            }, {
                                "Datum" : "9 mei",
                                "Aantal scans" : 88,
                                "Aantal bestellingen" : 42,
                                "Waarde" : 435.6
                            }, {
                                "Datum" : "10 mei",
                                "Aantal scans" : 76,
                                "Aantal bestellingen" : 43,
                                "Waarde" : 376.2
                            }, {
                                "Datum" : "11 mei",
                                "Aantal scans" : 30,
                                "Aantal bestellingen" : 22,
                                "Waarde" : 148.5
                            }
                        ]
                    }, {
                        "id" : 2,
                        "Advertentie" : "Wasmachine 4",
                        "Aantal scans" : 400,
                        "Aantal bestellingen" : 243,
                        "conversion" : "61%",
                        "Waarde" : 1202.85,
                        "days" : [{
                                "Datum" : "8 mei",
                                "Aantal scans" : 20,
                                "Aantal bestellingen" : 11,
                                "Waarde" : 99
                            }, {
                                "Datum" : "9 mei",
                                "Aantal scans" : 88,
                                "Aantal bestellingen" : 42,
                                "Waarde" : 435.6
                            }, {
                                "Datum" : "10 mei",
                                "Aantal scans" : 76,
                                "Aantal bestellingen" : 43,
                                "Waarde" : 376.2
                            }, {
                                "Datum" : "11 mei",
                                "Aantal scans" : 30,
                                "Aantal bestellingen" : 22,
                                "Waarde" : 148.5
                            }
                        ]
                    }
                ]
            }
        ]
    }
]

你可以清楚地看到差异