質問

やあみんな!まず第一に、私はこの種のものが非常にくだらないことを知っていますが、それが私の目標を達成することを視覚化する方法です。

ここに取引があります。配列を含むJSONオブジェクトがありますが、残念ながら、1つのJSONオブジェクトのリストを繰り返してから、以前に作成した配列を繰り返します。 JSONオブジェクトは次のように見えます(それはポルトガル語ですが、皆さんはそれを理解できます):

{"produtos":[{"key": "derivados de ferro"、 "value":217816909}、{"key": "madeiras、suas manufaturas e mobiliriomédicocirúrgico"、 "value":11781290}、{"" key key ":" Celulose、Papel e Suas Obras "、" Value ":100086937}、{" key ":" carnesuína "、" value ":81738783}、{" key ":" carne bovina "、" value ":74894768 }、{"key": "carne de aves"、 "value":65292433}、{"key": "outros"、 "value":444520811}]、 "ano":2005、 "tipo":1}

Produtosは私が言及した配列であり、私は重要な他の2つの値を持っています:ANO(年)とTipo(タイプ)。私のコードは次のように見えます:

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

このコードは、Chrome JavaScriptコンソールを表示します。

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

あなたたちは私を助けてくれませんか?

役に立ちましたか?

解決

これは、非配列で.each()を使用しようとしているからですか?

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

私の理解から、jquery.each(オブジェクト、コールバック、args)は、配列でのみ使用するためです。それが最初に行うことは、object.lengthを呼び出すことです。あなたが持っていない限り

[{"produtos":[{"key": "derivados de ferro"、 "value":217816909}、{"key": "madeiras、suas manufaturas e mobiliriomédicocirúrgico"、 "value":11781290}、{"" key key ":" Celulose、Papel e Suas Obras "、" Value ":100086937}、{" key ":" carnesuína "、" value ":81738783}、{" key ":" carne bovina "、" value ":74894768 }、{"key": "carne de aves"、 "value":65292433}、{"key": "outros"、 "value":444520811}]、 "ano":2005、 "tipo":1}]

あなたはそのエラーを得るつもりです。

さらに、Diodeusの提案を考慮に入れることができます。 jquery.eackは、データを使用するだけではなく、パフォーマンスがかなり少なくなります。

他のヒント

JSONデータを繰り返すためにjQueryは必要ありません。普通の古いJavaScriptを使用してください。

この質問を参照してください: HTMLのツリーとしてJSON/YAML階層を表示しますか?

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
    }
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top