PHP:从数据库获取数据以提供JQuery图表
data.php正在返回:PHP:从数据库获取数据以提供JQuery图表,php,jquery,ajax,Php,Jquery,Ajax,data.php正在返回: {name: 'orcamento', data: [14000.00,8500.00,0.00]},{name: 'real', data: [2038.00,120.00,15000.00]},{name: 'desvio', data: [-11962.00,-8380.00,15000.00]} 我想用这些数据来制作图表。如果我键入以下代码,它将正常工作: $(document).ready(function(){ var options={
{name: 'orcamento', data: [14000.00,8500.00,0.00]},{name: 'real', data: [2038.00,120.00,15000.00]},{name: 'desvio', data: [-11962.00,-8380.00,15000.00]}
我想用这些数据来制作图表。如果我键入以下代码,它将正常工作:
$(document).ready(function(){
var options={
chart: {
renderTo:'container',
type: 'bar'
},
title: {
text: 'Total Anual'
},
xAxis: {
categories: ['Vendas', 'Serviços', 'Outras']
},
series: [{name: 'orcamento', data: [14000.00,8500.00,0.00]},{name: 'real', data: [2038.00,120.00,15000.00]},{name: 'desvio', data: [-11962.00,-8380.00,15000.00]}]
};
});
但以下代码不起作用:
$(document).ready(function(){
var options={
chart: {
renderTo:'container',
type: 'bar'
},
title: {
text: 'Total Anual'
},
xAxis: {
categories: ['Vendas', 'Serviços', 'Outras']
},
series: [$.get('data.php')]
};
});
为什么?
编辑:我也尝试过这个,但运气不好:
$(document).ready(function(){
var dados=[];
$.ajax({
url:'data.php',
success: function(response){
dados=response
}
});
var options={
chart: {
renderTo:'container',
type: 'bar'
},
title: {
text: 'Total Anual'
},
xAxis: {
categories: ['Vendas', 'Serviços', 'Outras']
},
series: [dados]
};
});
EDIT2:也尝试了以下操作,但我得到了一个空图表:
$(document).ready(function(){
var dados=[];
$.ajax({
url:'data.php',
success: function(response){
dados=response
},
async:false
});
var options={
chart: {
renderTo:'container',
type: 'bar'
},
title: {
text: 'Total Anual'
},
xAxis: {
categories: ['Vendas', 'Serviços', 'Outras']
},
series: [dados]
};
var chart = new Highcharts.Chart(options);
});
在JSONLint中,我得到一个错误:
Parse error on line 1:
{ name: 'orcamento',
-----^
Expecting 'STRING', '}'
$.get('data.php')将忽略返回结果。
看
您必须使用回调
干杯,
J在编辑问题中,定义选项时可能未设置护墙板变量。因为ajax响应是异步的。尝试这样编辑:
$(document).ready(function(){
var dados=[];
var options = {};
$.ajax({
url:'data.php',
success: function(response){
dados=$.parseJSON(response); // EDITED
options={
chart: {
renderTo:'container',
type: 'bar'
},
title: {
text: 'Total Anual'
},
xAxis: {
categories: ['Vendas', 'Serviços', 'Outras']
},
series: [dados]
};
var chart = new Highcharts.Chart(options);
}
});
});
在PHP JSON结果中,按如下方式放置[]:
$(document).ready(function(){
var dados=[];
var options = {};
$.ajax({
url:'data.php',
success: function(response){
dados=$.parseJSON(response); // EDITED
options={
chart: {
renderTo:'container',
type: 'bar'
},
title: {
text: 'Total Anual'
},
xAxis: {
categories: ['Vendas', 'Serviços', 'Outras']
},
series: [dados]
};
var chart = new Highcharts.Chart(options);
}
});
});
[{name:'orcamento',数据:[14000.008500.00,0.00]},{name:'real',
数据:[2038.00120.0015000.00]},{name:'desvio',数据:
[-11962.00,-8380.0015000.00]}]
同意,还要确保输出头在data.phpThanks中设置为
application/json
,我更改了脚本,但仍然没有得到任何结果:var dados=[];$.ajax({url:'data.php',success:function(response){dados=response}});var options={图表:{renderTo:'container',类型:'bar'},标题:{文本:'Total Anual'},xAxis:{类别:['Vendas','Serviços','Outras']},系列:[dados]};var图表=新的Highcharts.图表(选项);首先,您需要返回有效的JSON。看起来您需要在整个JSON结构周围使用数组包装器[]
。其次,您可以将异步结果加载到一个变量中,就像您正在尝试的那样,您需要在成功回调中设置options.series到$。get()
谢谢,我检查了JSONLint,在第1行得到:Parse error:{name:'orcamento',----^预期为'STRING',}谢谢,我尝试了您的建议,我得到了未捕获的Highcharts错误#13:这没有意义。对chart函数的调用在哪里?检查这是否也是ajax成功后的调用。请参阅我的答案。你也可以使用async:false,就像我个人建议的那样,我更喜欢放在jQuery ajax调用中。从服务器中提取的数据是:[{name:'orcamento',data:[14000.008500.00,0.00]},{name:'real',data:[2038.00120.0015000.00]},{name:'desvio',data:[-11962.00,-8380.0015000.00]}。我在JSONLint“第2行的分析错误:[{name:'orcamento',--------------^应为'STRING','}'”中得到一个错误,并且没有图表。我也尝试过,请查看我的新问题,因为问题似乎是JSON: