问题描述
通过ajax进行后台接口请求,,并将返回后的数据进行整理,并赋值给变量,用于图形展示,但尝试过程中发现,echarts图能够渲染出来,但是图上无数据,尝试将数据值赋成固定值时,图中能够正常显示数据。
问题原因
Ajax是异步请求,在请求反馈前echarts已经完成了渲染,所以,当渲染完成后,再对变量进行赋值已经无法生效了。
解决方法
所以我在请求返回后,再对该部分进行渲染,就能够正常的显示图标数据了。
代码示例
调整前
radiusdata = []
seriesdata = []
$.ajax({
type: "POST",
headers: {
token: 'adasdasdasd'
},
data: {APPID: appId,},
url: config.base_server + "/serviceResourceMonitoring/getDatabaseMonitoringVal",
dataType: "json",
success: function(res){
if ( == 'idt-core-200') {
radiusdata = []
seriesdata = []
data =
for (var i=0;i<;i++){
(data[i]['param'])
(Number(data[i]['val']))
}
}
}
});
// var myChart5 = (('line5'));
var dom = ('line5');
var myChart5 = (dom, null, {
renderer: 'canvas',
useDirtyRect: false
});
var option = {
title: [
{
text: '表空间使用情况',
x: 'center'
}
],
polar: {
radius: [30, '80%']
},
angleAxis: {
max: 100,
startAngle: 75
},
radiusAxis: {
type: 'category',
data:radiusdata
},
tooltip: {},
series: {
type: 'bar',
data: seriesdata ,
coordinateSystem: 'polar',
label: {
show: true,
position: 'middle',
formatter: '{b}: {c}'
}
}
};
调整后
radiusdata = []
seriesdata = []
$.ajax({
type: "POST",
headers: {
token: 'adasdasdasd'
},
data: {APPID: appId,},
url: config.base_server + "/serviceResourceMonitoring/getDatabaseMonitoringVal",
dataType: "json",
success: function(res){
if ( == 'idt-core-200') {
radiusdata = []
seriesdata = []
data =
for (var i=0;i<;i++){
(data[i]['param'])
(Number(data[i]['val']))
}
// var myChart5 = (('line5'));
var dom = ('line5');
var myChart5 = (dom, null, {
renderer: 'canvas',
useDirtyRect: false
});
var option = {
title: [
{
text: '表空间使用情况',
x: 'center'
}
],
polar: {
radius: [30, '80%']
},
angleAxis: {
max: 100,
startAngle: 75
},
radiusAxis: {
type: 'category',
data: ["JZSOA_AUDIT", "JZSXXZX", "USERS", "IDT_MIDDLE85247", "JZSZX", "JZSOA", "JZSCOMMON" ]
},
tooltip: {},
series: {
type: 'bar',
data: [0.32, 0.19, 0.32, 0.01, 0.12, 0.46, 0.12 ],
coordinateSystem: 'polar',
label: {
show: true,
position: 'middle',
formatter: '{b}: {c}'
}
}
};
(option);
}
}
});