2014-04-19 2 views
0

나는 (다시!) 멈추었으며 이에 대한 예를 찾을 수 없습니다. 데이터를 추출하고 서식을 지정하는 여러 변형을 시도해 보았습니다. Google arrayToDataTable - 행 0에 대한 행 유형이 잘못되었습니다.

I가 서버 스크립트를 통해 JSON 형식으로 제공되는 다음과 같은 데이터 :

내가

var data = google.visualization.arrayToDataTable(jsonData); 

내가 데이터를 볼 필요가 이해를 사용하여 Google 시각화 테이블에 배치 할

[{ 
    "franchisee_name":"John Smith", 
    "dish_menu":"Breakfast", 
    "dish_title":"Bagels", 
    "hq_price":"9.00", 
    "store_price":"18.00", 
    "valid_from_date":"2014-04-13", 
    "valid_to_date":"9999-12-31" 
}, 
{ 
    "franchisee_name":"Sam Jones", 
    "dish_menu":"Breakfast", 
    "dish_title":"Muesli", 
    "hq_price":"8.00", 
    "store_price":"13.00", 
    "valid_from_date":"2014-04-13", 
    "valid_to_date":"9999-12-31" 
    }, ...... 

아래처럼 :

['Franchisee', 'Menu Type','Dish', 'HQ Price', 'Store Price', 'Valid From', 'Valid To'], <-- header row   
['John Smith', 'Breakfast', 'Bagels', '9.00', '18.00', '2014-04-13', '9999-12-31'], <-- data row 
.... 

내 코드는 다음과 같습니다 :

jQuery.getJSON(url, function(data) { 

    var header = ['Franchisee', 'Menu Type','Dish', 'HQ Price', 'Store Price', 'Valid From', 'Valid To'];    
    var row = "";    
    var rows = new Array(); 

    jQuery.each(data, function(i, d) { 
    row = [ d.franchisee_name, d.dish_menu, d.dish_title, int(d.hq_price), int(d.store_price), d.valid_from_date.toString(), d.valid_to_date.toString() ]; 
    rows.append(row); 
    }); 

    var jsonData = [header].concat(rows); 
    var data = google.visualization.arrayToDataTable(jsonData); 

    // Set chart options 
    var options = { 
    showRowNumber: 'false' 
    }; 

    // Instantiate and draw our chart, passing in some options. 
    var chart = new google.visualization.Table(document.getElementById('hq_report_div')); 
    chart.draw(data, options); 
}); 

그러나 오류 Invalid row type for row 0가 발생하며이를 해결하는 방법에 대한 예가 없습니다. 어떤 도움을 주셔서 감사합니다! 콜백 함수에 var data를 선언함으로써

답변

2

, 당신은 자바 스크립트의 hoisting mechanism과 동반 범위에 먹이 1을 미묘 가을. 기본적으로 선언은 함수의 맨 위로 이동하여 명명 된 인수를 마스크합니다. data[...]과 같지 않지만 undefined은 내 피 트 http://jsfiddle.net/dVaC2/을 참조하십시오.

예를 들어 gdata에 변수 이름을 변경 (및 [].append 대신 parseInt() 대신 int()와 [].push 사용) :

var gdata = google.visualization.arrayToDataTable(jsonData); 
// ... 
chart.draw(gdata, options); 

그리고 데모를 http://jsfiddle.net/dVaC2/1/


1http://www.adequatelygood.com/JavaScript-Scoping-and-Hoisting.html을 참조하십시오 또는 Javascript function scoping and hoisting 예 :

+0

안녕하세요 @nikoshr, 감사합니다! 나에게 굉장한 학습. – TheRealPapa

관련 문제