谷歌图表不接受格式良好的阵列

时间:2013-01-05 17:21:14

标签: javascript google-visualization

我正在使用Google图表API编写图表工具。 要更改构成图表的数据的时间跨度,我将jquery帖子发送到jsp servlet,该servlet返回类似于

的字符串行
Swedish#68#Pasta#4#Vegetarian#2#Seafood#2#Salad#1

它存储在字符串数据中,然后将其拆分为二维数组,这是我用来创建图表行的数据。

                data.trim();
                var dataArray = data.split("#");  
                var catChartArray = new Array((dataArray.length/2));
                for (var i = 0; i < dataArray.length/2;i++)
                    {catChartArray[i]=new Array(1);}    
                var j =0;
                for (var i = 0; i<dataArray.length/2; i++){
                    catChartArray[i][0]= dataArray[j];
                    catChartArray[i][1]= dataArray[parseInt(j+1)];
                    j+=2;
                }

然后我使用addRows(catChartArray)方法将其传递给google.visualization.DataTable()的实例。此时图表不会绘制,我无法理解为什么。它在构造时使用了那种,然后它工作正常。 我很没有经验使用Javascript所以我可能忽略了一些非常明显的东西。 阵列的打印输出显示没什么了不起的:

Swedish,68,Pasta,4,Vegetarian,2,Seafood,2,Salad,1

2 个答案:

答案 0 :(得分:0)

您处理的数据如下所示:

[["Swedish", "68"], ["Pasta", "4"], ["Vegetarian", "2"],...

不应该是这样的:

["Swedish", "Pasta", "Vegetarian"...
["68", "4", "2"...

答案 1 :(得分:0)

知道了! 有两件事在系统中造成了错误。

这当然不会产生任何错误:

catChartArray[i][1]= dataArray[parseInt(j+1)];

但它应该是

catChartArray[i][1]= parseInt(dataArray[j+1]);

此外,servlet还返回了许多必须中断数组的空行。 添加了

 <%@page trimDirectiveWhitespaces="true"%>

到我用于发布请求的jsp文件。

现在一切都按预期工作了。