我正在使用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
答案 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文件。
现在一切都按预期工作了。