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

Stella981
• 阅读 765

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

Highcharts AJAX JSON JQuery 实现动态数据交互显示图表 柱形图 个人小程序,可以微信扫一扫看看。谢谢支持

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

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

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

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

上个图给大家看下效果。

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

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

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

  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 自己下载就好了

<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增加的代码

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代码

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

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

<body>
        
        <div id="container" style="width: 800px; height: 400px; margin: 0 auto"></div>
       
</body>

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

    8.图表需要的数据方法

        8.1 Controller

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

    @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字符串数组

/**
     * 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对象

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}....]}

$(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

公开QQ  783021975 请留言说明您的问题。否则不加。

个人联盟 http://www.bengbeng.com/?sid=687095

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表。前端数据转化与请求varcontracts{id:'1',name:'yanggb合同1'},{id:'2',name:'yanggb合同2'},{id:'3',name:'yang
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Wesley13 Wesley13
3年前
Java日期时间API系列36
  十二时辰,古代劳动人民把一昼夜划分成十二个时段,每一个时段叫一个时辰。二十四小时和十二时辰对照表:时辰时间24时制子时深夜11:00凌晨01:0023:0001:00丑时上午01:00上午03:0001:0003:00寅时上午03:00上午0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这