美文网首页
Echarts图表如何实现ajax实现动态数据加载

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

作者: 喵妈 | 来源:发表于2017-10-25 23:48 被阅读0次

现在已经深夜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();

}

})

相关文章

网友评论

      本文标题:Echarts图表如何实现ajax实现动态数据加载

      本文链接:https://www.haomeiwen.com/subject/aixhpxtx.html