JFinal使用ajax给echarts柱状图动态传值

业务:显示前十名拥有证书最多的人。

思路:创建一个页面带有无数据的echarts柱状图,编写Service方法(查询到你所要展示的X轴数据以及Y轴数据),编写Controller方法(获取到Serivce查询到的数据,然后遍历这些数据,通过条件把数据通过json格式返回给页面),回到页面通过ajax获取Controller的json数据,然后传值到data。


1.首先创建一个echarts容器

<div class="col-xs-6">
	<h3 >排行榜</h3>
	<div id="main2" style="width: 800px;height:400px;"></div>
</div>

2.柱状图的配置(无数据)

	$(function($){
		var chartDom = document.getElementById('main2');
		var myChart = echarts.init(chartDom);
		var option;
		
		option = {
		  xAxis: {
		    type: 'category',
		    data: []
		  },
		  yAxis: {
		    type: 'value'
		  },
		  series: [
		    {
		      data: [],
		      type: 'bar'
		    }
		  ]
		};				
	});

3.Service方法

	//对应人的证书数量排名
	public List<Patent> findPByAuthor() {
		String sql = "SELECT author,COUNT(patentname) as 'num' FROM patent GROUP BY author ORDER BY COUNT(patentname) DESC LIMIT 0,10";
		return dao.find(sql);	
	}

4.Controller方法

	public void chartsAuthor() {
		//查询到所需数据
		List<Patent> author = echartsService.findPByAuthor();
		//遍历X轴的数据
		List<String> authList = author.stream().map(au->{
			return au.getStr("author");
		}).collect(Collectors.toList());
		//遍历Y轴的数据
		List<Long> numList = author.stream().map(au->{
			return au.getLong("num");
		}).collect(Collectors.toList());
		//返回Json数据
		renderJson(Ret.ok("authList", authList).set("numList", numList));
	}

5.Service和Controller方法写好之后,就开始使用ajax向柱状图传递数据

	$(function($){
		var chartDom = document.getElementById('main2');
		var myChart = echarts.init(chartDom);
		var option;
		
		option = {
		  xAxis: {
		    type: 'category',
		    data: []
		  },
		  yAxis: {
		    type: 'value'
		  },
		  series: [
		    {
		      data: [],
		      type: 'bar'
		    }
		  ]
		};
		
        //ajax的get方法传值
		$.get('/echarts/chartsAuthor',function(result){
			console.log(result);
			if(result.state === 'ok'){
				option.xAxis.data = result.authList;
				option.series[0].data = result.numList;
				myChart.setOption(option);
			}
			
			console.log(option)
		},'json');
		//myChart.setOption(option);
				
	});

6.效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值