我正在尝试使用mysql脚本检索的mysql数据在页面中创建一个简单的图表
我不明白如何将ajax调用与图表所需的数据集成。我不太了解各种图表插件,让我的生活变得轻松,目前正在尝试高级图。
我的php脚本返回以下json:
[{"name":"golfers"},{"data":[5.7879,6.6286,6.1724,5.3125,7.1481,6.1333,4.5769]}]
我的图表脚本是:
$(function () {
visitorData(function(data) {
console.info(data);
$('#chart1').highcharts({
chart: {
type: 'column'
},
title: {
text: 'Average Visitors'
},
xAxis: {
categories: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
},
yAxis: {
title: {
text: 'Number of visitors'
}
},
series: data,
});
});
});
我的ajax调用函数:
$.ajax({
url: '/visitdata',
type: 'GET',
async: true,
dataType: "json",
success: function (data) {
console.warn(data);
return data;
}
});
但目前还没有展示任何东西。
我不确定如何有效地进行ajax调用并将其集成到图表函数中。我决定基于先前的尝试和帖子进行回调,以确保在创建图表之前返回数据 - 这一点是否正确?
我不是100%确定json数据结构正确
我不确定我是否正确地将数据变量应用于系列
基本上 - 需要一个关于此的教程,以便我可以使它工作和实验
所有帮助表示赞赏
由于
答案 0 :(得分:21)
我认为您无法从成功调用中返回值,而是需要调用函数。因此,设置初始化图表的函数,并在ajax成功调用带有数据的函数
使用您的代码示例
function visitorData (data) {
$('#chart1').highcharts({
chart: {
type: 'column'
},
title: {
text: 'Average Visitors'
},
xAxis: {
categories: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday']
},
yAxis: {
title: {
text: 'Number of visitors'
}
},
series: data,
});
}
$(document).ready(function() {
$.ajax({
url: '/visitdata',
type: 'GET',
async: true,
dataType: "json",
success: function (data) {
visitorData(data);
}
});
});
答案 1 :(得分:2)
在你的ajax成功函数中用data [1] .data调用你的visitorData函数(因为这就是你的json格式化方式)
$.ajax({
url: '/visitdata',
type: 'GET',
async: true,
dataType: "json",
success: function (data) {
visitorData(data[1].data);
}
});
另外,您的visitorData函数def是奇数。
vistorData = function(data)
或
function vistorData(data)
答案 2 :(得分:-1)
//parse json response
var chartSeriesData = [];
var chartCategory = [];
$.each(response, function() {
if(this.name!="TOTAL" && this.no!="0") {
var series_name = this.name;
var series_data = this.no;
var series = [
series_name,
parseFloat(series_data)
];
chartSeriesData.push(series);
}
});
//initialize options for highchart
var options = {
chart: {
plotBackgroundColor: null,
plotBorderWidth: null,
plotShadow: false
},
title: {
text: 'SalesOrder '
},
tooltip: {
pointFormat: '{series.name}: <b>{point.y}</b>'
},
plotOptions: {
pie: {
allowPointSelect: true,
cursor: 'pointer',
center:['60%','60%'],
size:150
,
dataLabels: {
enabled: true,
color: '#000000',
distance: 40,
connectorColor: '#000000',
format: '<b>{point.name}</b>: {point.y} '
}
}
},
series: [{
type: 'pie',
name: 'Browser share',
data:chartSeriesData //load array created from json
}]
}
//options.series[0].setData(datavaluejson);
var chart= $('#container').highcharts(options);