Question

Hé les gars! Tout d'abord, je sais que ce genre de choses est assez merdique, mais c'est la façon dont je visualisons atteindre mon objectif.

Voici l'affaire: j'ai un objet JSON qui contient un tableau, mais malheureusement, je dois parcourir la liste d'un objet JSON, puis itérer throught ce tableau I mencioned avant. Le regard de l'objet JSon comme suit (il est en portugais, mais les gars vous pouvez le comprendre):

  

{ "Produtos": [{ "clé": "DERIVADOS DE FERRO", "Valeur": 217816909}, { "clés": "MADEIRAS,   SUAS MANUFATURAS E Mobiliário MÉDICO   CIRÚRGICO " "Valeur": 117812290}, { "clé":" CELULOSE,   PAPEL E SUAS   OBRAS " "Valeur": 100086937}, { "clé":" Carne   Suina " "Valeur": 81738783}, { "clé":" Carne   Bovina " "Valeur": 74894768}, { "clé":" CARNE DE   AVES », "Valeur": 65292433}, { "clé": "Outros", "Valeur": 444520811}], "ano": 2005, "tipo": 1}

Produtos est le tableau je l'ai mentionné, et j'ai deux autres valeurs qui sont importantes: Ano (année) et tipo (type). Mon apparence de code comme suit:

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);              
});

Ce morceau de code rend la console de Chrome à afficher:

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

Pouvez-vous les gars me aider?

Était-ce utile?

La solution

Est-ce parce que vous essayez d'utiliser .each () sur un tableau non?

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

De ma compréhension, jQuery.each (objet, rappel, args) est uniquement pour une utilisation sur des tableaux. La première chose qu'il fait est de faire un appel à object.length. Donc, à moins que vous avez

[ { "Produtos": [{ "clé": "DERIVADOS DE FERRO", "Valeur": 217816909}, { "clés": "MADEIRAS, suas MANUFATURAS E Mobiliário MÉDICO CIRÚRGICO " "Valeur": 117812290}, { "clé":" CELULOSE, PAPEL E SUAS OBRAS " "Valeur": 100086937}, { "clé": "CARNE suina", "Valeur": 81738783}, { "clé":" Carne Bovina », "Valeur": 74894768}, { "clé": "CARNE DE AVES", "Valeur": 65292433}, { "Clé": "Outros", "Valeur": 444520811}], "ano": 2005, "tipo": 1} ]

vous allez obtenir cette erreur.

En outre, vous pouvez prendre la suggestion de Diodeus en considération. jQuery.each est un peu moins performant que juste en utilisant un pour faire une boucle à travers vos données.

Autres conseils

Vous n'avez pas besoin jQuery pour itérer les données JSON. Utilisez simplement vieux Javascript.

Voir cette question: Affichage JSON / hiérarchie YAML comme un arbre en 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
    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top