我有一个Highchart的图表,需要每分钟重新生成一次。我很好奇如何刷新下面的图表?http://pastebin.com/bEwkX8Fk
我认为刷新div可能就足够了,但经过进一步的思考,我意识到我可能必须从控制器发起某种调用来更新图形的数据。这里有什么关于正确方法的想法吗?
我现在在想,也许用Highcharts的json功能更新它是最好的,但我还不确定从哪里开始。
发布于 2012-01-16 07:08:46
您需要设置一个到服务器的ajax请求,该服务器每隔X毫秒轮询一次,最好使用下面这样的jquery。
var ajax_path = #{action_controller_path}
function pollData() {
$.ajax({
type: 'get',
url: ajax_path,
success: function(data) {
// update chart
var series = chart.series[0],
shift = series.data.length > 20; // shift if the series is longer than 20
chart.series[0].addPoint(data, true, shift);
setTimeout(pollData, 60000) // Poll data every 60s
}
});
}
在rails端,您将需要创建一个Controller#action来提供此ajax请求,请记住将您的responds_to设置为包含json。大体如此,请“照原样”理解这段代码:
respond_to :json, only: [:polling_action]
def polling_action
@data_point = Model.get_data
respond_with @data_point
end
我认为如何实际更新图表的细节在@nikita-beloglazov引用的文章中有所说明:http://www.highcharts.com/documentation/how-to-use,这里的http://www.highcharts.com/ref/#series-object用于addPoint (对象选项,布尔重绘,布尔移位,混合动画) api参考,这是您在使用ajax轮询方法加载数据点后应该调用的。
注意:请记住,除非您知道更新数据的时间间隔,否则轮询数据不是一个非常有效的过程。考虑到您只需要每隔60秒更新一次此数据,这可能不是问题,但只需将其发布给其他可能会遇到此问题的人。
发布于 2012-01-15 08:27:59
文档中有一个更新highchart的示例:http://www.highcharts.com/documentation/how-to-use。只需在控制器中实现方法,为图表返回适当的数据即可。
https://stackoverflow.com/questions/8868015
复制