Hia家伙,
我目前正在学习使用HighCharts来绘制一些数据。
在学习设置本地页面后,是时候动态加载数据/通过ajax。
图表加载正常,系列定义如下:
var series1=[];
var series2=[];
var series3=[];
然后我有一个按钮,它触发一个ajax请求,这些数组充满了数据,从sql数据库中提取,格式化并发送回网页:D (这需要一段时间)
现在 - 填充这些数组后,我希望让HighCharts绘制这些数据。
我试过使用chart.refresh();在我的ajax结尾但这似乎给出了错误:
Uncaught TypeError: Object #<Object> has no method 'refresh'
我有点难过并且努力取得进步 - 非常感谢在正确方向上的推动!
编辑:
chart.series[0].setData(series1);
阵列填满后需要触发什么。
答案 0 :(得分:3)
这里没有看到你的其余代码是一个疯狂的猜测: 您已经在HighCharts选项中“已创建”这3个系列设置了图表。您正在加载页面,定义HighCharts选项(包括3系列 - 作为空系列),然后触发ajax调用以填充三个系列的数据。
然而,您实际上并没有将每个系列中的新数据推送到图表中。您只是在将变量发送到HighCharts后将变量设置为新值 - refreshing
(如果甚至是有效的HighCharts调用)HighCharts“没有”,因为它没有重新读取3个var值。
另请注意,chart.refresh似乎不是有效的HighCharts调用。您可以尝试chart.redraw
- 但我不认为这会对您的情况有所帮助,因为您如何定义数据系列元素(同样,不知道因为重要部分 - 告诉HighCharts有新数据)代码没有呈现)。请查看API以及有关动态分配数据的指示。
您如何更新系列值?你是如何告诉图表有新数据的?看到剩下的代码会很有帮助,因为var x=[]
的3行并不真正有用。
$('#button').click(function() {
chart.series[0].setData([129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4, 29.9, 71.5, 106.4] );
});