2013-10-08 67 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