日期:2014-05-16  浏览次数:20395 次

使用JQuery结合HIghcharts实现从后台获取JSON实时刷新图表

?? 项目做了一个报表,可以实时的观察呼叫中心的电话访问量,之前的版本是使用JFreechart做的,使用一段时间后出现内存溢出,服务器的内存使用量会变得很大,所以改用Ajax前台加载数据的方式实现实时报表功能,查了很久选择了JQuery结合Highcharts的方式,Highcharts是一个JS实时报表API,下面给出基本代码:

?? 首先,要添加JQuery和Highcharts的引用:

?

<script type='text/javascript' src='js/jquery-1.3.2.js'></script>
<script type='text/javascript' src='js/highcharts.js'></script>

??

?? 页面的body部分需要有个层用来渲染图表:

?

<body>
	<div id="container" style="height: 400px"></div>
</body>

?

?? 在JS中声明图表:

?

?

<script type='text/javascript'>
	//<![CDATA[ 
	$(function(){
                 //声明报表对象
		var chart = new Highcharts.Chart({
    		chart: {
                //将报表对象渲染到层上
        	renderTo: 'container'
    	},
                //设定报表对象的初始数据
    	series: [{
        	data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]        
    	}]
	});

		function getForm(){
                                                //使用JQuery从后台获取JSON格式的数据
			jQuery.getJSON('http://localhost:8080/JQueryPIC/ajax', null, function(data) {
                                                                //为图表设置值
				chart.series[0].setData(data);
			});
		}

	
		$(document).ready(function() {
			//每隔3秒自动调用方法,实现图表的实时更新
			window.setInterval(getForm,3000); 
			
		});
	

	});
	//]]> 
	</script>

?

?

1 楼 lolomarx 2010-11-07  
我试过初始的数据能画出图,但是后面定时去拿数据就不对了,
图表清空了,什么也没有,返回的数据是对的啊,
很困惑
  jQuery.getJSON('http://highcharts.com/demo/tokyo.json', null, function(data) {
                                                                   //为图表设置值
                   chart.series[0].setData(data);
              });
2 楼 lolomarx 2010-11-07  
改成这样也能显示
jQuery.getJSON('http://highcharts.com/demo/tokyo.json', null, function(data) {
                                                                   //为图表设置值
                   chart.series[0].setData([9,10]);
              });
真是奇怪呀,
http://highcharts.com/demo/tokyo.json 返回的数据是对的,为什么     chart.series[0].setData(data); 没有数据呢?


3 楼 奥义之舞 2011-04-13  
楼主 Highcharts 绘制了 一个 曲线图 , 用AJAX 交互的, 怎么 性能这么差呢
4 楼 奥义之舞 2011-04-13  
我使用HighCharts 刷新 一次 内存增长率 就多了 3MB
5 楼 奥义之舞 2011-04-13