2011-01-14 4 views
0

안녕 얘들 아! 우선, 나는 이런 종류의 물건들이 꽤 엿 같은 것을 알고 있지만 그것이 나의 목표 달성을 시각화하는 방법이다.foreach를 JQuery에서 foreach 내부에 두는 방법은 무엇입니까?

여기에 거래가 있습니다. 배열이 포함 된 JSon 객체가 있지만 불행히도 JSon 객체 목록을 반복하고 그 전에 반복 된 배열을 반복해야합니다. 다음과 같이 JSON 객체 모양 (는 포르투갈어이지만, 너희들이 그것을 이해할 수) :

{ "produtos": [{ "키": "DERIVADOS DE 페로", "값": 217,816,909} { "키": "도우루, SUAS MANUFATURAS E MOBILIARIO 의사 CIRÚRGICO", "값": 117,812,290}, { "키": "CELULOSE, PAPEL E SUAS OBRAS", "값": 100,086,937}, { " Key ":"CARNE SUÍNA ","Value ": 81738783}, {"Key ":"CARNE BOVINA ","Value ": 74894768}, {"Key ":"CARNE DE AVES " 65302433}, { "Key": "Outros", "Value": 444520811}], "ano": 2005, "tipo": 1}

Produtos는 내가 언급 한 배열이며 중요한 두 가지 값이 있습니다. ano (year) 및 tipo (type)입니다. 내 코드 모양은 다음과 같이

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

너희들이 나를 도울 수 :

코드의이 조각은 수
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);    
}); 

디스플레이 자바 스크립트 콘솔 크롬?

답변

2

이인가 :

이 질문을 참조하십시오? 나의 이해에서

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

는 jQuery.each (객체, 콜백, 인수는) 단지 배열에 사용할 수 있습니다. 첫 번째 작업은 object.length를 호출하는 것입니다. 그래서 당신은

[ { "produtos"이없는 경우 : [{ "키": "DERIVADOS DE 페로", "값": 217,816,909}, { "키": "도우루, SUAS MANUFATURAS E MOBILIARIO 의사 CIRÚRGICO을 ","값 ": 117812290}, {"키 ":"CELULOSE, PAPEL E SUAS OBRAS ","값 ": 100086937}, {"키 ":"CARNE SUÍNA ","값 ": 81738783} Key ":"CARNE DE AVES ","Value ": 65292433}, {"Key ":"Outros ","Value ": 444520811}"키 ":"CARNE BOVINA ","값 ": 74894768} ], "ano": 2005, "tipo": 1}

이 오류가 발생합니다.

또한 Diodeus의 제안을 고려할 수 있습니다. jQuery.each는 for를 사용하여 데이터를 반복하는 것보다 훨씬 성능이 떨어진다.

2

JSON 데이터를 반복하는 데 jQuery가 필요하지 않습니다. 평범한 구식 자바 스크립트를 사용하십시오. 가 아닌 배열에() .each 사용하려는 때문에 Display JSON/YAML hierarchy as a tree 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 
    } 
관련 문제