Echarts图表如何实现ajax实现动态数据加载

现在已经深夜12点了,拖着疲惫身体还是写完这篇简书吧,今天用了Echarts实现动态加载数据,干货还是要分享给大家的


自己确实有点low了,破东西搞了一个小时,之前也一直在用这个,但是都是给的死数据,这次哥们后台需要图标统计,数据都是实时更新的,叫小搞了一下

首先把echarts的插件引入,根据官方文档都有现成的demo,话不多说,直接进入主题

刚开始天真的以为,只要把数据从ajax中获取出来,组成数组就可以放进去了,就比如下面这么傻的写


事实证明,我想的太简单了,并没有什么卵用

真正的正确写法是在ajax获取正确的数据后,在success的方法里,直接setOption,把需要加入全局数据加入进去,当然,在获取数据前,把需要加入活的数据的属性赋值为空,下面是完整代码,粘贴上去睡觉觉了,晚安!


var myChart = echarts.init(document.getElementById('main'));

// 显示标题,图例和空的坐标轴

myChart.setOption({

title: {

text: '施工队工时统计'

},

tooltip: {

trigger: 'axis',

axisPointer: {

type: 'cross',

crossStyle: {

color: '#999'

}

}

},

toolbox: {

feature: {

dataView: {show: true, readOnly: false},

magicType: {show: true, type: ['line', 'bar']},

restore: {show: true},

saveAsImage: {show: true}

}

},

legend: {

data:['工时','临时总工时','项目数']

},

xAxis: {

data: []

},

yAxis: [

{

type: 'value',

name: '工时',

min: 0,

max: '',

interval:30,

axisLabel: {

formatter: '{value} 天'

}

},

{

type: 'value',

name: '项目数',

min: 0,

max: '',

interval: 30,

axisLabel: {

formatter: '{value} 个'

}

}

],

series: [

{

name:'工时',

type:'bar',

//             data:projectshu

data:[]

},

{

name:'临时总工时',

type:'bar',

//             data:zgsn

data:[]

},

{

name:'项目数',

type:'line',

yAxisIndex: 1,

//             data:lsgsn

data:[]

}

]

});

myChart.showLoading();    //数据加载完之前先显示一段简单的loading动画

//      var names=[];    //类别数组(实际用来盛放X轴坐标值)

//      var nums=[];    //销量数组(实际用来盛放Y坐标值)

var projectshu=[];

var zgsn=[];

var lsgsn=[];

var team_name=[];

$.ajax({

type : "post",

async : true,            //异步请求(同步请求将会锁住浏览器,用户其他操作必须等待请求完成才可以执行)

url : "{:U('Tongji/sgdgstongji')}",    //请求发送到TestServlet处

data : {},

dataType : "json",        //返回数据形式为json

success : function(result) {

//请求成功时执行该函数内容,result即为服务器返回的json对象

if (result) {

for(var i=0;i

team_name.push(result[i].team_name);    //挨个取出销量并填入销量数组

}

var maxpro =0;

var maxpros;

for(var i=0;i

projectshu.push(result[i].project_num);    //挨个取出类别并填入类别数组

if(result[i].project_num>max){

maxpro=result[i].project_num

}

}

maxpros=parseInt(maxpro/10);

if(maxpros<=0){

maxpros=1;

}

var max =0;

var maxbei;

for(var i=0;i

zgsn.push(result[i].zgs);    //挨个取出销量并填入销量数组

if(result[i].zgs>max){

max=result[i].zgs

}

}

maxbei=parseInt(max/10);

if(maxbei<=0){

maxbei=1;

}

for(var i=0;i

lsgsn.push(result[i].lsgs);    //挨个取出销量并填入销量数组

}

myChart.hideLoading();    //隐藏加载动画

myChart.setOption({        //加载数据图表

xAxis: {

data: team_name

},

yAxis:[

{

name: '工时',

max: max,

interval:maxbei,

},

{

name: '项目数',

max: maxpro,

interval: maxpros,

}

],

series: [

{

// 根据名字对应到相应的系列

name: '工时',

data: zgsn

},

{

// 根据名字对应到相应的系列

name: '临时总工时',

data: lsgsn

},

{

// 根据名字对应到相应的系列

name: '项目数',

data: projectshu

}

]

});

}

},

error : function(errorMsg) {

//请求失败时执行该函数

alert("图表请求数据失败!");

myChart.hideLoading();

}

})

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 5,330评论 0 7
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,969评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,767评论 18 399
  • SwiftDay011.MySwiftimport UIKitprintln("Hello Swift!")var...
    smile丽语阅读 3,864评论 0 6
  • 小娃不好对付了 镜头下是这样的:餐桌上残羹剩饭、一片狼藉。我和他爸都速战速决地吃完了晚餐,只剩...
    齐格格阅读 446评论 0 3