ECharts多图表与后台交互

2023-02-25 17:26:10 浏览数 (2)

ECharts多图表与后台交互

图表交互目前暂时的想法是多绑定一个DOM

1、效果:

2、test2.html

代码语言:javascript复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <!--引入Echarts文件-->
    <script src="js/echarts.min.js"></script>
    <script src="js/jquery-3.4.1.min.js"></script>
</head>
<body>
<div id="main" style="width: 600px;height: 400px;"></div>
<div id="main1" style="width:600px;height: 400px;"></div>

<script type="text/javascript">
    var myChart=echarts.init(document.getElementById('main'));
    var myChart1=echarts.init(document.getElementById('main1'));
    //显示标题,图例和空的坐标轴
    myChart.setOption({
        title : {
            text : 'ECharts'
        },
        tooltip : {
            show : true
        },
        legend : {
            data : [ '销量' ]
        },
        xAxis : {
            data : []
        },
        yAxis : {},
        series : [ {
            name : '销量',
            type : 'line',//图表类型,必要参数!如为空或不支持类型,则该系列数据不被显示,具体类型可进入ECharts官方查找API
            data : []
        }]
    });
    myChart1.setOption({
        title : {
            text : 'ECharts'
        },
        tooltip : {
            show : true
        },
        legend : {
            data : [ '销量' ]
        },
        xAxis : {
            data : []
        },
        yAxis : {},
        series : [ {
            name : '销量',
            type : 'bar',//图表类型,必要参数!如为空或不支持类型,则该系列数据不被显示,具体类型可进入ECharts官方查找API
            data : [],
            //配置样式
            itemStyle: {
                //通常情况下样式
                normal: {
                    //每个柱子的颜色即为colorList数组里的每一项,如果柱子数目多于colorList的长度,则柱子颜色循环使用该数组
                    color: function (params) {
                        var colorList = ['#8dc63f', '#add8e6', '#ffb6c1', '#f37b1d'];
                        return colorList[params.dataIndex];
                    }
                },
                //鼠标悬停时,显示强调效果
                emphasis: {
                    shadowBlur: 10,
                    shadowOffsetX: 0,
                    //第四个参数不透明参数,0.5表示半透明
                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                }
            }
        }]
    });
    myChart.showLoading(); //数据加载完之前先显示一段简单的loading动画

    var names = []; //类别数组(实际用来盛放X轴坐标值)
    var nums = []; //销量数组(实际用来盛放Y坐标值)
    $.ajax({
        type : "post",
        async : true, //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)
        url : "test2", //请求发送到Controller处,路径我上面写好了的,直接拼的,你自己按照你的写
        data : {},
        dataType : "json", //返回数据形式为json
        success : function(result) {
            //请求成功时执行该函数内容,result即为服务器返回的json对象
            if (result) {
                for (var i = 0; i < result.length; i  ) {
                    names.push(result[i].name); //挨个取出类别并填入类别数组
                }
                for (var i = 0; i < result.length; i  ) {
                    nums.push(result[i].num); //挨个取出销量并填入销量数组
                }
                myChart.hideLoading(); //隐藏加载动画
                myChart1.hideLoading();
                myChart.setOption({ //加载数据图表
                    xAxis : {
                        data : names
                    },
                    series : [ {
                        // 根据名字对应到相应的系列
                        name : '销量',
                        data : nums
                    } ]
                });
                myChart1.setOption({ //加载数据图表
                    xAxis : {
                        data : names
                    },
                    series : [ {
                        // 根据名字对应到相应的系列
                        name : '销量',
                        data : nums
                    } ]
                });
            }
        },
        error : function(errorMsg) {
            //请求失败时执行该函数
            alert("图表请求数据失败!");
            myChart.hideLoading();
        }
    })



</script>
</body>
</html>

3、moreGraph.class

代码语言:javascript复制
package com.echart.test;

import com.echart.pojo.Product;
import com.fasterxml.jackson.databind.ObjectMapper;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/test2")
public class moreGraph extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置请求编码格式
        req.setCharacterEncoding("UTF-8");
        //设置响应编码格式
        resp.setCharacterEncoding("utf-8");
        Product product1=new Product("手机",2000);
        Product product2=new Product("电脑",3000);
        Product product3=new Product("显示器",200);
        Product product4=new Product("主机",5000);

        List<Product> list=new ArrayList<>();
        list.add(product1);
        list.add(product2);
        list.add(product3);
        list.add(product4);
        //提供java-json相互转换功能的类
        ObjectMapper mapper=new ObjectMapper();
        //将list中的对象转换为Json格式的数组
        String json=mapper.writeValueAsString(list);
        System.out.println(json);

        //将json数据返回给客户端
        resp.setContentType("text/html;charset=utf-8");
        resp.getWriter().write(json);
    }
}

部署项目:

0 人点赞