使用Ajax将数据加载到Highcharts中
我正在尝试通过JQUERY
AJAX调用来更新页面加载和选择菜单更改时的高图表。有以[[10,1228800000],[10,1228800000]]格式返回的数据。图表为空白,不对任何数据进行图形处理。
尝试了此处发布的几种解决方案,但没有一个有效。
var chart; $(document).ready(function() {
var options = {
chart: {
renderTo: 'stats',
defaultSeriesType: 'spline'
},
title: {text:''},
xAxis: {
type: 'datetime'
},
yAxis: {},
series: []
};
var month = 'July';
$.ajax({
type: "POST",
data: "month="+month,
url: "update_visits_chart",
success: function (data) {
options.series.push(data);
chart = new Highcharts.Chart(options);
}
});
有什么错误吗?提前致谢。编辑:
最新的代码仍然无法正常工作:
var options = { chart: {
renderTo: 'stats',
type: 'spline'
},
title: {
text: ''
},
xAxis: {
type:'datetime',
tickInterval: 30 * 24 * 3600 * 1000,
dateTimeLabelFormats: {
day: '%b %e'
},
labels: {
rotation: -45,
align: 'right'
}
},
yAxis: {
title: {
text: 'Number of visits'
},
min: 0
},
tooltip: {
formatter: function() {
return Highcharts.dateFormat('%b %e', this.x) +'<br />'+this.y+' visit(s)';
}
},
legend: {
enabled: true
},
credits: {
enabled: false
},
exporting: {
enabled: false
},
series: [{
name: 'Number of Visits',
data: []
}]
};
var month = 'July';
$.ajax({
type: "POST",
url: "update_visits_chart",
data: "month="+month,
success: function(data){
options.series[0].data = data;
chart = new Highcharts.Chart(options);
}
});
回答:
您必须使用文档中描述的系列对象的setData方法。你的情况是options.series[0].setData(Data)
而且我认为您必须使用将Ajax结果从字符串转换为真实的对象/数组JSON.parse(data)
。
@Ricardo
Lohmann:在ajax调用中,他没有指定他期望在响应中使用的dataType,因此jQuery将猜测dataType。但是它无法识别[
以JSON
开头的字符串,因此我怀疑他的响应是否将使用正确的mime类型提供服务application/json
。因此,指定正确的mime类型也应该可以解决该问题。但我没有发问者完整的ajax响应的示例。所以我也只是猜测。
我建议以下ajax调用:
$.ajax({ type: "POST",
url: "update_visits_chart",
data: {month: month},
dataType: 'json',
success: function(data){
options.series[0].setData(data);
}
});
@Jugal Thakkar
$.getJSON
只是上述ajax调用的快捷方式,但灵活性较差,因为您的选择较少。
以上是 使用Ajax将数据加载到Highcharts中 的全部内容, 来源链接: utcz.com/qa/419924.html