我尝试通过ajax获取系列和数据 在Document.ready:
中检索数据的函数 function requestData() {
$.ajax({
type: 'POST',
dataType: 'json',
url: xxxxx,
async: false,
// you can use an object here
success: function(data) {
$("html").css('cursor','auto');
//remove previous data
while(chart.series.length > 0)
chart.series[0].remove(true);
$.each(data, function(val, text) {
counter = 0;
$.each(text, function() {
if (counter==0) {
datoscol= "[" + this + "]";
}
else{
datoscol= datoscol + "," + "[" + this + "]";
}
counter=1
});
datoscol = "["+datoscol + "]";
alert (datoscol);
chart.addSeries({
name: val,
data: datoscol
});
});
chart.redraw();
},
cache: false
});
}
我还在document.ready中初始化Highcharts:
chart = new Highcharts.Chart({
chart: {
renderTo: 'container2',
type: 'line',
pointInterval: 30*24 * 3600 * 1000,
events: {
load: function(){
chart = this;
requestData();
}
}
},
title: {
text: 'Facturación clínica'
},
credits: {
enabled: false
},
xAxis: {
type: 'datetime',
maxZoom: 14 * 24 * 3600000, // fourteen days
title: {
text: null
}
},
yAxis: {
title: {
text: 'Facturación (€)'
}
},
tooltip: {
formatter: function() {
var s;
if (this.point.name) { // the pie chart
s = ''+
this.point.name +': '+ this.y +' fruits';
} else {
s = ''+
this.y + " Euros";
}
return s;
}
},
labels: {
items: [{
html: 'Facturación clínica',
style: {
left: '40px',
top: '8px',
color: 'black'
}
}]
}
});
我从服务器获得的数据类似于: {" Employee1":[[" 1356908400000"" 10.00"],[" 1359586800000"" 11.00&#34 ;],[" 1362006000000"," 12.00"],[" 1364684400000"," 13.45"]],"和Employee2":[[" 1356908400000"" 10.00"],[" 1359586800000"" 11.00"],[& #34; 13620.06亿"" 12.00"],[" 1364684400000"" 13.45"]]}
因此,当我将系列添加到highcharts时,值是,例如: chart.addSeries({ name:val,---------> Employee1 数据:datoscol -------> [[" 1356908400000"," 10.00"],[" 1359586800000"," 11.00& #34;],[" 1362006000000"," 12.00"],[" 1364684400000"," 13.45"]]
我没有通过firebug控制台获得任何错误,但除了轴和图例之外没有任何错误。我得到了所有系列名称,但没有关于数据,没有标记,没有行。
答案 0 :(得分:0)
您尝试提供给Highcharts(变量datoscol
)的数据是一个字符串。在您的情况下,您必须提供一个对象和,每个数组的内容也必须是数字。
我认为最好的方法是修复服务器响应。
如果你不能,那么简单,肮脏和有潜在危险的方法就是eval
datoscol
变量,因为你将它提供给Highcharts:
chart.addSeries({
name: val,
data: eval(datoscol)
});
看到它正在运行here。
另一种方法是将每个数组元素转换为整数(日期时间)和浮点数(金额)。因此,您可以写下此代码,而不是当前的$.each
:
for (var seriesName in data) {
var curData = data[seriesName];
var curDataLen = curData.length;
for (var i = 0; i < curDataLen; i++) {
curData[i][0] = parseInt(curData[i][0], 10);
curData[i][1] = parseFloat(curData[i][1]);
}
chart.addSeries({ name: seriesName, data: curData });
}
看到它正在运行here。