Frage

Hey guys! Zunächst einmal, ich weiß, diese Art von Sachen ziemlich beschissen ist, aber das ist die Art, wie ich mein Ziel visualisieren zu erreichen.

Hier ist der Deal: Ich habe ein JSON-Objekt, das ein Array enthält, aber leider muss ich Iterierte durch die Liste der ein JSON-Objekt, und dann Throught Iterierte das Array ich vor mencioned. Die JSon Objekt sieht wie folgt aus (in portugiesisch, aber euch können es verstehen):

{ "produtos": [{ "Key": "DERIVADOS de ferro", "Wert": 217816909}, { "Key": "MADEIRAS, SUAS MANUFATURAS E MOBILIARIO MÉDICO Cirurgico " "Wert": 117812290}, { "Key":" CELULOSE, PAPEL E SUAS OBRAS " "Wert": 100086937}, { "Key":" CARNE Suina " "Wert": 81738783}, { "Key":" CARNE BOVINA " "Wert": 74894768}, { "Key":" Carne de AVES“, "Wert": 65292433}, { "Key": "Outros", "Wert": 444520811}] "ano": 2005 "tipo": 1}

Produtos ist das Array bereits erwähnt, und ich habe zwei andere Werte, die wichtig sind: ano (Jahr) und Tipo (Typ). Mein Code wie folgt aussehen:

jQuery.getJSON("/webportos/Porto/GraficoComercio?id=" + iddoporto.className + "&ano=2005", null, function (items) {                
    jQuery.each(items, function (itemNo, item) {
        jQuery.each(item.produtos, function (dicNo, dic) {
            options.series.push({ name: dic.Key, data: dic.Value});                             
            options.title.text = "Comércio - "+item.ano;
            options.yAxis.title.text = "Exportação";                                
            options.tooltip.formatter = function () {
                return '<b><u>' + this.series.name + '</u></b><br/><b>' + this.x + '</b>: ' + this.y + ' ';
            }           
        });
    });

    chart = new Highcharts.Chart(options);              
});

Dieses Stück Code macht Chrome JavaScript-Konsole angezeigt werden soll:

ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js:32 Uncaught TypeError: Cannot read property 'length' of undefined

Könnt ihr mir helfen?

War es hilfreich?

Lösung

Ist es, weil Sie versuchen, (verwenden .each) auf einem nicht-Array?

jQuery.each(items, function (itemNo, item) {

Von meinem Verständnis, jQuery.each (Objekt, Rückruf, args) ist nur für den Einsatz auf Arrays. Das erste, was sie tut, ist ein Aufruf an object.length machen. Also, wenn Sie haben

[ { "produtos": [{ "Key": "DERIVADOS de ferro", "Wert": 217816909}, { "Key": "MADEIRAS, SUAS MANUFATURAS E MOBILIARIO MÉDICO Cirurgico " "Wert": 117812290}, { "Key":" CELULOSE, PAPEL E SUAS OBRAS " "Wert": 100086937}, { "Key": "CARNE Suina", "Wert": 81738783}, { "Key":" CARNE BOVINA“, "Wert": 74894768}, { "Key": "Carne de AVES", "Wert": 65292433}, { "Key": "Outros", "Wert": 444520811}] "ano": 2005 "tipo": 1} ]

du wird diesen Fehler erhalten.

Darüber hinaus können Sie Diodeus Vorschlag berücksichtigen. jQuery.each ist ein bisschen weniger performant als nur für eine Schleife durch Ihre Daten.

Andere Tipps

Sie können jQuery Iterierte durch JSON-Daten benötigen. Verwenden Sie nur alte Javascript.

Sehen Sie diese Frage: Anzeige JSON / YAML Hierarchie als Baum in HTML?

function renderJSON(obj) {
    var keys = []
    var retValue = ""
    for (var key in obj) {
            if(typeof obj[key] == 'object') {
                    retValue += "<div class='tree'>" + key                                          
                    retValue += renderJSON(obj[key])
                    retValue += "</div>"
            }
            else {
                    retValue += "<div class='tree'>" + key + " = " + obj[key] + "</div>"
            }

       keys.push(key)
    }
    return retValue
    }
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top