2010-07-16 116 views
1

我有以下腳本,我需要修改一點。這裏是JSON:谷歌圖表格式

[ 
    {"User1":{"v": 50.00,"f": "£100"}}, 
    {"User2":{"v": 10.00,"f": "£20"}}, 
    {"User3":{"v": 10.00,"f": "£20"}}, 
    {"User4":{"v": 10.00,"f": "£20"}}, 
    {"User5":{"v": 20.00,"f": "£40"}} 
] 

和這裏的腳本:

<html> 
<head> 
<script language="javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script> 
<script type="text/javascript" src="http://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
    google.load("visualization", "1", {packages:["corechart"]}); 
    google.setOnLoadCallback(drawChartAjax); 

    function drawChartAjax() { 
     $.ajax({ 
      url: 'chart_json.aspx', 
      type: 'POST', 
      dataType: 'json', 
      success: function(data) { 
       drawChart(data); 
      } 
     }); 
    } 

    function drawChart(json) { 
     var data = new google.visualization.DataTable(); 
     data.addColumn('string', 'User'); 
     data.addColumn('number', 'v'); 
     data.addRows(json.length); 
     for(var j in json) { 
      for(var k in json[j]) { 
       data.setValue(parseInt(j), 0, k); 
       data.setValue(parseInt(j), 1, json[j][k].v); 
      } 
     } 
     var chart = new google.visualization.PieChart(document.getElementById('chart_div')); 
     chart.draw(data, {width: 500, height: 300, is3D: true, title: 'Work In Progress'}); 
    } 
</script> 
</head> 
    <body> 
    <div id="chart_div"></div> 
    </body> 
</html> 

該作品以給我一個很好的餅圖,如何從JSON獲得「F」的值到圖表太數據?

回答

1

添加一個f列:

data.addColumn('number', 'v'); 
data.addColumn('number', 'f'); // <- new line 

而且,添加數據到行:

for(var k in json[j]) { 
    data.setValue(parseInt(j), 0, k); 
    data.setValue(parseInt(j), 1, json[j][k].v); 
    data.setValue(parseInt(j), 2, parseInt(json[j][k].f.substring(1))); // <- new line 
} 

但是,我不知道一個餅圖如何處理。

+0

我得到一個類型不匹配的錯誤。 – oshirowanen 2010-07-16 16:05:20

+0

啊 - 因爲數據不是數字(因爲磅符號)。您可以將其設置爲數字(服務器端或客戶端),也可以將列f的數據類型從「數字」更改爲「字符串」。 – sje397 2010-07-16 16:20:05

+0

我更新了我的答案,以顯示如何插入保持'數字'數據類型的數據。它只是剔除第一個字符(英鎊符號),然後解析字符串爲int。 – sje397 2010-07-16 16:27:34