2013-10-08 69 views
0

我有以下函數生成一個谷歌的圖表,但它不工作:傳遞字符串到谷歌圖addRows

function drawChart(a) { 
      alert(a.test); 
      var data = new google.visualization.DataTable();  
      data.addColumn('string', 'Year'); 
      data.addColumn('number', 'Sales'); 
      data.addColumn('number', 'Expenses'); 
      data.addRows(a.test); 


      var options = { 
          title: 'Company Performance' 
         }; 

      var chart = new google.visualization.LineChart(document.getElementById('chart_div')); 
      chart.draw(data, options); 
     } 

「a.test」檢索的字符串如下:

test="[['2004', 1000, 400],['2005', 1170, 460],['2006', 660, 1120],['2007', 1030, 540]]"; 

但是,如果我直接就把價值觀這樣

data.addRows([['2004', 1000, 400],['2005', 1170, 460],['2006', 660, 1120],['2007', 1030, 540]]); 

它的工作原理。

你能幫我理解我錯在哪裏嗎?

謝謝!

回答

4

addRows方法接受一個數組的數組,而不是字符串,所以你需要更改a.test到一個數組或改變成一個JSON字符串,並在其上調用JSON.parse

// note that the internal quotes are double-quotes here, as that is required by JSON 
var foo = '[["2004", 1000, 400],["2005", 1170, 460],["2006", 660, 1120],["2007", 1030, 540]]'; 
data.addRows(JSON.parse(foo)); 
+0

謝謝您的回答。我試圖把你的代碼直接放在我的函數中,但它仍然不工作...: -/ – user1723319

+0

我把它放在一個小提琴中,讓你看到:http://jsfiddle.net/asgallant/hyRdR/。請注意,要使用此方法,您必須將您的字符串中的引號從單引號更改爲雙引號,以便與JSON規範兼容。 – asgallant

+0

謝謝!我錯過了頁面頂部的<!DOCTYPE html>,這就是問題所在!:-) 現在,它的工作原理!非常感謝您的幫助! – user1723319