Echarts 获取后台数据 使用后台数据展示 饼装图

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>ECharts</title>
</head>

<body>
<!-- 为ECharts准备一个具备大小(宽高)的Dom -->
<div id="main" style="height:400px"></div>
<div id="main2" style="height:400px"></div>
<script src="http://echarts.baidu.com/build/dist/echarts.js"></script>
<script src="http://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
});

// 路径配置
require.config({
paths: {
echarts: 'http://echarts.baidu.com/build/dist'
}
});
// 使用
require(
[
'echarts',
'echarts/chart/pie' // 使用柱状图就加载bar模块,按需加载
],
function (ec) {
// 基于准备好的dom,初始化echarts图表
var myChart = ec.init(document.getElementById('main'));
var option = {
title : {
text: '某站点用户访问来源',
subtext: '纯属虚构',
x:'center'
},
tooltip : {
trigger: 'item',
formatter: "{a} <br/>{b} : {c} ({d}%)"
},
legend: {
orient : 'vertical',
x : 'left',
data:(function(){
var arr=[];
$.ajax({
type : "post",
async : false, //同步执行
url : "<%=basePath%>getUserJson",
data : {},
dataType : "json", //返回数据形式为json
success : function(result) {
if (result) {
for(var i=0;i<result.length;i++){
arr.push(result[i].userName);
}
}

},
error : function(errorMsg) {
alert("获取图表请求数据失败!");
myChart.hideLoading();
}
})
console.log("arr:"+arr);
return arr;
})()
},
toolbox: {
show : true,
feature : {
mark : {show: true},
dataView : {show: true, readOnly: false},
magicType : {
show: true,
type: ['pie', 'funnel'],
option: {
funnel: {
x: '25%',
'50%',
funnelAlign: 'left',
max: 1548
}
}
},
restore : {show: true},
saveAsImage : {show: true}
}
},
calculable : true,
series : [
{
name:'访问来源',
type:'pie',
radius : '55%',
center: ['50%', '60%'],
data:(function(){
var arr=[];
$.ajax({
type : "post",
async : false, //同步执行
url : "<%=basePath%>getUserJson",
data : {},
dataType : "json", //返回数据形式为json
success : function(result) {
if (result){
var selfme=null;
for(var i=0;i<result.length;i++){
selfme={value:result[i].age,name:result[i].userName}  
arr.push(selfme);
// arr.push("{value:"+result[i].age+",name:'"+result[i].userName+"'}");
}
}
},
error : function(errorMsg) {
alert("获取图表请求数据失败!");
myChart.hideLoading();
}
})
console.log("arrB:"+arr)
return arr;
})()
}
]
};
// 为echarts对象加载数据
myChart.setOption(option);
}
);

</script>
</body>

=====================================================

 备注说明:

data是构造的数组数据,所以直接将例子后面的[] 块去掉,换上自己的function函数,将该函数的值放在数组中

第二个data存的也是数组,不过要数据的格式要符合echarts的标准,所以这里构造的是一个相同格式的对象

js构造对象(直接通过 属性名/值来创建)

eg:var o={name:'tom', age:22}

所以在第二个data中直接{value:xx,name:xx}即可

标注颜色的是重点,容易出错的地方!!!!!

匿名函数必须(function(){})()

原文地址:https://www.cnblogs.com/austinspark-jessylu/p/6297561.html