我需要在通过Ajax获取数据后绘制高级图表。
我的高保真选项正在关注
var option = {
chart: { renderTo: "chartDiv", marginleft: 100 },
title: {
text: '',
x: -20 //center
},
xAxis: {
title: {
text: "Shifts"
},
},
yAxis: {
title: {
text: "Volume"
},
min: 0
},
tooltip: {
crosshairs: true,
shared: true,
formatter: function () {
var s = [];
s.push('<span> Day: <strong>' + this.points[0].x + '</strong></span>');
$.each(this.points, function (i, point) {
s.push('<span style="color:' + point.series.color + ';font-weight:bold;">' + point.series.name + ' : ' +
Math.round(point.y * 1000) / 1000 + '<span>');
});
return s.join('<br />');
}
},
legend: { layout: 'vertical', align: 'right', verticalAlign: 'top', floating: true, borderWidth: 0, floating: false },
plotOptions: {
}
};
我的值是通过ajax生成的
function generateChart(shiftNum, days) {
var chart = new Highcharts.Chart(option);
for (series = 0; series < shiftNum; series++) {
chart.addSeries({
type: 'bar',
});
}
for (i = 1; i < days; i++) {
(function(i){
$.ajax({
type: "POST",
url: "/ajaxcall/ShiftData",
dataType: "json",
data: JSON.stringify({
'shiftnum': shiftNum,
'dayOfMonth': i
}),
contentType: 'application/json; charset=utf-8',
success: function(result) {
if (result.Success) {
$.each(result.Report, function(s, rep) {
chart.series[s].data.push([i, rep.FinalVol]);
});
}
},
complete: function() {
console.log(chart);
chart.xAxis[0].isDirty = true;
chart.redraw(); //This gives error
}
});
})(i);
}
}
generateChart(2, 7);
当我运行它时,它运行正常,直到它到达重绘方法。当我在firebug中看到控制台的图表时,我可以看到数据的设置方式与我想要的一样。但是每次执行ajax时我都会得到这个迭代。
TypeError:b [l] .destroyElements不是函数
...... r(l = 0; l
图表应显示每个班次中所选天数的产量。
请帮忙