HighChart / HighStock chart.refresh似乎无法重新加载图表

时间:2013-01-29 13:40:19

标签: ajax highcharts

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);

阵列填满后需要触发什么。

1 个答案:

答案 0 :(得分:3)

这里没有看到你的其余代码是一个疯狂的猜测: 您已经在HighCharts选项中“已创建”这3个系列设置了图表。您正在加载页面,定义HighCharts选项(包括3系列 - 作为空系列),然后触发ajax调用以填充三个系列的数据。

然而,您实际上并没有将每个系列中的新数据推送到图表中。您只是在将变量发送到HighCharts后将变量设置为新值 - refreshing(如果甚至是有效的HighCharts调用)HighCharts“没有”,因为它没有重新读取3个var值。

另请注意,chart.refresh似乎不是有效的HighCharts调用。您可以尝试chart.redraw - 但我不认为这会对您的情况有所帮助,因为您如何定义数据系列元素(同样,不知道因为重要部分 - 告诉HighCharts有新数据)代码没有呈现)。请查看API以及有关动态分配数据的指示。

您如何更新系列值?你是如何告诉图表有新数据的?看到剩下的代码会很有帮助,因为var x=[]的3行并不真正有用。

以下是使用series设置setData数据的基本方法:

$('#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] );
});