Echarts通过json加载数据

最近因为项目的需要学习Echarts,通过官网http://echarts.baidu.com/feature.html可以系统学习,下面就说下自己写的一个例子。

一、创建实体:

public class Series
{
    public String name;
    public String type;
    public List<Integer> data;
    public Series(String name, String type, List<Integer> data)
    {
        this.name = name;
        this.type = type;
        this.data = data;
    }

    public String toName()
    {
        return name;
    }

}

二、写控制层,具体情况根据自己框架

@Controller
@RequestMapping("/demo")
public class DemoController {
    private static final Logger logger = LoggerFactory
            .getLogger(DemoController.class);

    @RequestMapping("/echartsQuery")
    public String echartsQuery(Model model, String pageNos)
    {
        logger.info("展示页面开始");
        logger.info("展示页面结束");        

        return "wsip/echartsShow";
    }

    @RequestMapping("/echartsView")
    @ResponseBody
    public String echartsView()
    {
        List<String> xAxisData = new ArrayList<String>();
        List< JSONObject> seriesList = new ArrayList< JSONObject>();
        for (int i = 1; i < 13; i++)
        {
            xAxisData.add(i+"月");
        }
        for (int i = 1; i < 4; i++)
        {
            List<Integer> list = new ArrayList<Integer>();
            for (int j = 1; j < 13; j++)
            {
                 list.add((int)(Math.random()*100));
            }
            Series series = new Series("销售"+i, Series.TYPE_LINE, list);
            JSONObject job = new JSONObject();
            job.put("name", series.toName());
            job.put("type", "bar");
            job.put("data",series.data);
            seriesList.add(job);
        }
        //xAxisData和seriesList转为json
        JSONObject jsob = new JSONObject();
        jsob.put("xAxisData", xAxisData);
        jsob.put("seriesList", seriesList);
        return jsob.toString();
    }

}

这里的数据不是查询数据库,而是模拟查询的数据,原理一样。其中@ResponseBody这个注解一定要有,不然前台获取的不是json数据。

三、页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn"%>
<c:set var="BP" value="${pageContext.request.contextPath}" />
<!DOCTYPE html>
<html>
<head>
<meta  charset="utf-8" http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="renderer" content="webkit|ie-comp|ie-stand">
<title>demo</title>
<link rel="stylesheet" href="${BP}/resources/ued-new/css/rdc.min.css">
<link rel="stylesheet" href="${BP}/resources/ued-new/css/style.css">
<script src="${BP}/resources/ued-new/plugins/jquery-1.10.2.min.js"></script>
<script src="${BP}/resources/js/plugins/echarts-3/echarts.min.js"></script>
</head>
<body>
    <div class="ued-crumbs ued-crumbs-line">
        <span class="ued-crumbs-title"><i class="ued-ico ued-ico-home"></i><b>您当前所在位置:</b></span>
        <a href="#">echarts</a>
    </div>
    <br><br><br><br>
        <div class="title ">
            <h1>echarts</h1>
        </div>
        <div class="rcont-mould">
        <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
        <div id="main" style="width: 100%;height:500px;"></div>
        </div>

</body>

<script type="text/javascript">

//基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById(‘main‘));
// 显示标题,图例和空的坐标轴
option = {
    title: {
        text: ‘2016年三位销售员业绩‘,
        subtext: ‘数据为虚构‘
    },
    tooltip: {},
    legend: {
        data:["销售1","销售2","销售3"]
    },
    toolbox:
    {
        show:true,
        feature:
        {
            dataView:{show: true, readOnly: false},
            magicType : {show: true, type: [‘line‘, ‘bar‘]},
            restore : {show: true},
            saveAsImage : {show: true}
        }
    },
    xAxis: {
        type:"category",
        data: []
    },
    yAxis: [{
        type:"value",
    }],
    series: [
        {
            name:"销售1",
            type:"bar",
            data:[]
        },
        {
            name:"销售2",
            type:"bar",
            data:[]
        },
        {
            name:"销售3",
            type:"bar",
            data:[]
        }
    ]
};
myChart.showLoading(); //loading动画

$.ajax({
    type : "post",
    async : true,
    url : "${pageContext.request.contextPath}/demo/echartsView",
    dataType:"json",
    success:function(result) {

        if(result)
        {
           var obj = eval(‘(‘ + result + ‘)‘);
           myChart.hideLoading();
             myChart.setOption({
                 xAxis:{
                     data:obj.xAxisData
                 },
                 series:obj.seriesList
             });
        }

   },
    error : function(errorMsg) {
        //请求失败时执行该函数
    alert("请求数据失败!");
    myChart.hideLoading();
    }
});
myChart.setOption(option);
</script>

</html>

其中要引入的echarts.min.js可以在官网下载。

四、效果图

时间: 2024-10-19 11:57:47

Echarts通过json加载数据的相关文章

ECharts Java 动态加载数据

1.前台JSP页面 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd&quo

Echarts ajax动态加载json数据

后台php写的,给前台准备好json格式数据 public function actionGetOffline(){ $userid = Yii::$app->user->identity->user_id; $connection = Yii::$app->db; $command = $connection->createCommand("SELECT proc_phase_id from tb_pro where user_id like '%$userid%

echarts在.Net中使用实例(二) 使用ajax动态加载数据

前一篇文章链接:echarts在.Net中使用实例(一) 简单的Demo 通过上一篇文章可以知道和echarts参考手册可知,series字段就是用来存储我们显示的数据,所以我们只需要用ajax来获取series的值就可以. option 名称 描述 {color}backgroundColor 全图默认背景,(详见backgroundColor),支持rgba,默认为无,透明 {Array} color 数值系列的颜色列表,(详见color),可配数组,eg:['#87cefa', 'rgba

Android之ListView&amp;Json加载网络数据

使用到的主要内容: 1.Json 解析网络数据 2.异步任务加载图片和数据 3.ListView 的内存空间优化(ConvertView)和运行时间优化(ViewHolder) 4.ListView 滚动监听实现分页加载数据 5.动态定义 布局和控件(想实现下拉刷新,好像不是这样实现的..) ....... HttpUtil 工具类网络申请数据(用 Gson 解析) --- 别忘记添加网络权限 <uses-permission android:name="android.permissio

Android利用Volley异步加载数据(JSON和图片)完整示例

Android利用Volley异步加载数据(JSON和图片)完整示例 MainActivity.java package cc.testvolley; import org.json.JSONObject; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v

echarts2.*版本tree树图点击节点加载数据(或点击节点收缩)实现参考

自上一篇说明的点击节点更换节点图标后,发现网上有许多关于点击节点加载数据(或点击收缩节点)的问题,一直没看到满意的解答.现在在上一篇的基础上做出如下实现:点击节点动态加载/收缩子节点. 废话不多说,代码贴出来,简单易懂: <!DOCTYPE html> <html lang="en">   <head>     <meta charset="UTF-8">     <title>echarts demo&l

echart动态加载数据

<!DOCTYPE html> <head>     <meta charset="utf-8">     <title>ECharts</title> </head> <body>     <!-- 为ECharts准备一个具备大小(宽高)的Dom -->     <div id="main" style="height:400px">&

(转帖)关于easyui中的datagrid在加载数据时候报错:无法获取属性&quot;Length&quot;的值,对象为null或未定义

结贴说明: 很感谢sp1234等人的热心帮忙和提醒,现在我主要说明下问题所在: 首先我在独立的js文件中,直接把测试数据loaddata进去datagrid是没有问题的.var kk = {"total":2,"rows":[{"INSTANCE_ID":"BI00000011","BUSINESS_NAME":"专项检查文档资料报送","INSTANCE_STATUS&quo

SpringMVC+Jquery -页面异步加载数据

背景: 做项目时涉及到页面,当我打算在controller中传一个list到页面,然后通过<c:foreach>循环遍历出来时,同事说:你这样每次都要刷新,这都是几百年前使用的技术了.你用post实现异步加载数据.然后就...... ResultUtil.java 工具类: package com.sgcc.uds.fs.config.web.util; import java.util.HashMap; import java.util.Map; import net.sf.json.JSO