PHP:从数据库获取数据以提供JQuery图表

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={

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={
        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: