echarts异步数据加载(在下拉框选择事件中异步更新数据)

小编 2026-07-03 阅读:1373 评论:0
接触echarts 大半年了,从不会到熟练也做过不少的图表,隔了一段时间没使用这玩意,好多东西真...

接触echarts 大半年了,从不会到熟练也做过不少的图表,隔了一段时间没使用这玩意,好多东西真心容易忘了。在接触echarts这期间也没有总结什么东西,今天我就来总结一下如何在echart中异步加载数据,在实际的工作的中对数据的刷选非常常见,比如在下拉框中选择,时间选择等的一些事件中异步加载数据。一个很常见的筛选如图:

echarts异步数据加载(在下拉框选择事件中异步更新数据)

下面我就直接用代码来实现怎样在事件刷选中异步刷新数据

 //路径配置    require.config({        paths: {            echarts: "/Scripts/echarts-2.2.7/build/dist"        }    });    var MYCHART;  //声明一个大写的全局变量,能不用全局的尽量就不要用全局变量    //使用    require(['echarts',              'echarts/chart/bar'],  //按需加载        function (ec)        {            //实例dom             MYCHART = ec.init(document.getElementById("main"));            var option = {                tooltip: {                    show: true                },                legend: {                    data: ['得分']                },                xAxis: [                    {                        type: "category",                        data:['']                      //  data:["科比", "欧文", "詹姆斯", "库里", '杜兰特', '威少', '韦德']                    }                ],                yAxis: [                    {                        type: "value"                    }                ],                series: [                    {                        "name": "得分",                        "type": "bar",                         data:['']                         //data:[20102, 2000, 1200, 1002, 1204, 4545, 7878]                    }                ]            }            console.info(MYCHART);            //位echart对象加载数据            MYCHART.setOption(option,true);            loadOption(2011);//使用ajax同步加载数据        }    )

其实我也很纳闷了,这个xAxis中data属性是一个数组,series中data也是一个数组,如果直接不写任何数据,在loadOption方法中,再获取MACHAT.option中会找不到series,xAxis ,option倒是能获取到,但是这个对象是空的。这让我很奇怪,所以只能先写一个空字符串了。

    //ajax 异步加载配置数据项    function loadOption(year)    {        $.ajax({            url: '/Home/GetJson?year='+year,            type: 'get',            dataType: 'json',            async: false,            success: function (result) {                if (result)                {                    var option = MYCHART._option;  //e2中感觉这个命名十分奇怪,居然要这样获取,必须先设置才有这个属性                    debugger                    if (result.seriesData == null) {                        option.series[0].data = [''];                        option.xAxis[0].data = ['']                    }                    else {                        option.series[0].data = result.seriesData;                        option.xAxis[0].data = result.xAxisData;                    }                    MYCHART.setOption(option,true);                }            },            error: function ()            {                alert("不好意思请求失败了");            }        })    }

要注意这两点

1.刚开始的时候我也很奇怪,获取option 属性居然有这样获取MYCHART._option 。在e3直接MYCHART.getOption()就可以获取到。

2.echarts图表动态刷新数据不能清空数据,这是因为多次调用option默认是合并的Merge ,文档里说设置第二个参数为true就ok ,如上MYCHART.setOption(option,true)


下拉框选择年份事件:

    function yearChange(selectObj)    {        var year = $(selectObj).val();        loadOption(year);    }

实际运行的效果图如下:

echarts异步数据加载(在下拉框选择事件中异步更新数据)


echarts图表中值得注意两点上面已经说了,一个数据动态加载数据没有清除数据,一个获取option必须先setOption才能获取到。但是我郁闷的是如果不给series 中data属性设值,xAxis中data属性设值获取到的option是一个空的object。虽然实现整个下拉选择事件动态加载数据的功能,但是代码还是得优化一下。

整个思路就是同步执行ajax加载数据,设置option中的属性。还是要注意方法调用的循序。经常会underfined地报错,debugger的时候看的很清楚。

下载地址:http://download.csdn.net/detail/kebi007/9742894

作者:张林

标题: echarts异步数据加载(在下拉框选择事件中异步更新数据)原文地址:http://blog.csdn.net/kebi007/article/details/54663620

转载随意注明出处


版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表