Highcharts AJAX JSON JQuery 实现动态数据交互显示图表 柱形图

 Highcharts AJAX JSON 实现动态数据交互显示 JQuery 图表 柱形图 主要使用的JQuery AJAX JSON SpringMVC 基于之前的2篇框架添加的新功能


这是第一篇实例的步骤与代码。还有整个项目的结构图。

http://my.oschina.net/xshuai/blog/345117

        原创的博文。转载注明出处。大家赶紧收藏吧。

        本人highcharts新手。只是做个了练手的实例。还望大神指点。

上个图给大家看下效果。

点击  查看图表 如下图展示效果

  1. Highcharts简介

Highcharts 是一个用纯JavaScript编写的一个图表库, 能够很简单便捷的在web网站或是web应用程序添加有交互性的图表,并且免费提供给个人学习、个人网站和非商业用途使用。HighCharts支持的图表类型有曲线图、区域图、柱状图、饼状图、散状点图和综合图表。

    2.Highcharts 中文API 实例网站

    http://www.hcharts.cn/index.php ---------------------中文官方网站

    http://www.hcharts.cn/docs/index.php----------------中文教程

    http://www.hcharts.cn/demo/index.php---------------在线演示

    http://bbs.hcharts.cn/forum.php-----------------------中文论坛

    3.下载highcharts 与使用

    http://www.hcharts.cn/resource/index.php 使用最新的就可以了。

    http://www.hcharts.cn/docs/index.php?doc=start-download 网站里面有详细的介绍每个文件夹的作用。

    4.需要的文件 jquery 自己下载就好了

?
1
2
< script  type = "text/javascript"  src = "${ctx }/js/jquery-1.10.2.js" ></ script >
< script  type = "text/javascript"  src = "${ctx }/js/highcharts/highcharts.js" ></ script >

     5.页面index.jsp增加的代码

?
1
2
3
4
5
6
7
8
9
10
html代码
< a  href = "javascript:void(0);"  id = "highchart"  onclick = "gotoHighchart();"  class = "blank_btn"  >查看图表</ a >
 
js代码
     function gotoHighchart(){
         var url = '${ctx }/user/chartpage';
         window.location.href=url;
     }
 
操作当点击跳转页面

    6.Controller代码

?
1
2
3
4
5
6
     @RequestMapping (value =  "chartpage" )
     public  String chartpage(HttpServletRequest request,
             HttpServletResponse response) {
         return  "views/user/chartpage" ;
     }
与第 5 步的想对应。

    7.所需要的页面代码 chartpage.jsp  

?
1
2
3
4
5
< body >
         
         < div  id = "container"  style = "width: 800px; height: 400px; margin: 0 auto" ></ div >
        
</ body >

以上实现了页面跳转的功能。需要图表的数据。还得继续

    8.图表需要的数据方法

        8.1 Controller

            接受service传递json的字符串给页面

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
     @RequestMapping (value =  "/chart" )
     public  String chart(HttpServletRequest request, 
             HttpServletResponse response)  throws  Exception {
         String result =  null ;
         try  {
             result = userService.chart();
         catch  (Exception e) {
             if (log.isErrorEnabled()){
                 log.error( "查询列表失败" , e);
             }
             result =  null ;
         }
         StringUtil.writeToWeb(result,  "html" , response);
         return  null ;
     }

        8.2 Service

            将list对象存入map中。并转为json字符串数组

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
/**
      * highcharts用的
      * @Title: chart
      * @Description: 直接转出JSON传递给前台页面接受
      * @return
      */
     public  String chart(){
         List<Map<String, Object>> list = userDao.chart();
         Map<String, Object> map =  new  HashMap<String, Object>();
         map.put( "list" , list);
         Gson gson =  new  GsonBuilder().setDateFormat( "yyyy-MM-dd" ).create();
         String s = gson.toJson(map);
         return  s;
     }

        8.3 DAO

             使用的的JDBCTemplate 传递sql语句查询。返回list对象

?
1
2
3
4
public  List<Map<String,Object>> chart(){
         String sql =  "select u.name,u.age from userinfo u" ;
         return  jdbcTemplate.queryForList(sql);
     }

    以上基本完成了数据的获取和转JSON字符串数组剩下就是在页面接受JSON并填充到highcharts图表里面

    9.JS代码。使用AJAX传递过来。并填充到highcharts里面即可。最后一步,也是最要人命的一步。

      一定要注意json字符串数组的解析。本人就是在这里纠结了半天多。怨自己没好好学习jquery。和强大的JSON字符串。

     本人的json为  所以在遍历的时候需要注意一下自己的list这个数组里面的数据。可以忽略这句话。是本人的失误。

{"list":[{"name":"一号","age":19},{"name":"二号","age":22},{"name":"test","age":19}....]}

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
$( function (){
     var  x = []; //X轴
     var  y = []; //Y轴
     var  xtext = []; //X轴TEXT
     var  color = [ "gray" , "pink" , "red" , "blue" , "yellow" , "green" , "#fff" ];
     $.ajax({
         type: 'get' ,
         url: '${ctx}/user/chart' , //请求数据的地址
         success: function (data){
             var  json = eval( "(" +data+ ")" );
             var  s = 1;
             for ( var  key  in  json.list){
                 json.list[key].y = json.list[key].age;  //给Y轴赋值
                 xtext = json.list[key].name; //给X轴TEXT赋值
                 json.list[key].color= color[key];
             }
                 chart.series[0].setData(json.list); //数据填充到highcharts上面
         },
         error: function (e){
        
     });
     var  chart =  new  Highcharts.Chart({
         chart:{
             renderTo: 'container' ,
             type: 'column'  //显示类型 柱形
         },
         title:{
             text: '年龄分布图'  //图表的标题
         },
         xAxis:{
             categories:xtext
         },
         yAxis:{
             title:{
                 text: '年龄'  //Y轴的名称
             },
         },
         series:[{
             name: "姓名"
         }]
     });
});

   

个人微博 http://weibo.com/zxshuai319 

个人博客 http://my.oschina.net/xshuai/blog


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值