php - Amchart 和 Ajax 以不正确的格式获取数据

标签 php javascript ajax format amcharts

我想使用 AmChart 并从 php 获取图表数据。

这是我的 php 文件:

$colors = Array("#FF0F00","#FF6600","#FF9E01","#FCD202","#F8FF01","#B0DE09","#04D215","#0D8ECF","#0D52D1","#2A0CD0","#8A0CCF","#CD0D74","#754DEB","#DDDDDD","#999999","#333333","#000000");

$datas = $bdd->query("SELECT count(*) as count, rest.name as name
                   FROM command com, zone z, dinningroom dr, restaurant rest
                   WHERE com.zone = z.number
                       AND z.dinningroom = dr.number
                       AND dr.restaurant = rest.number
                   GROUP BY rest.number;");

$i=0;
while($data = $datas->fetch())
{   
    $dataList[$i]=array("name"=>$data['name'],"count"=>$data['count'],"color"=>$colors[$i]);
    $i++;
}
echo json_encode($dataList);
?>

$datas 有很好的数据。 SQL请求很好,返回我想要的。

这是我的 Ajax 请求的 javascript:

$.ajax({
              url: 'statComPerMenu.php',
              failure: function (data) {
                  alert('fail: ' + data);
              },
              success: function(data) {
                    var statComPerMenuChart;

                    // SERIAL CHART
                    statComPerMenuChart = new AmCharts.AmSerialChart();
                    statComPerMenuChart.dataProvider = data;

                    statComPerMenuChart.categoryField = "name";
                    // the following two lines makes chart 3D
                    statComPerMenuChart.depth3D = 20;
                    statComPerMenuChart.angle = 30;

                    // AXES
                    // category
                    var categoryAxis = statComPerMenuChart.categoryAxis;
                    categoryAxis.labelRotation = 90;
                    categoryAxis.dashLength = 5;
                    categoryAxis.gridPosition = "start";

                    // value
                    var valueAxis = new AmCharts.ValueAxis;
                    valueAxis.dashLength = 5;
                    statComPerMenuChart.addValueAxis(valueAxis);

                    // GRAPH            
                    var graph = new AmCharts.AmGraph();
                    graph.valueField = "count";
                    graph.colorField = "color";
                    graph.balloonText = "[[name]]: [[count]]";
                    graph.type = "column";
                    graph.lineAlpha = 0;
                    graph.fillAlphas = 1;
                    statComPerMenuChart.addGraph(graph);

                    // WRITE
                    statComPerMenuChart.write("chartdiv");

           } //Success
           });
       };

没有显示图表。

但是,如果我通过以下方式更改 var 'data': data = [{name: "toto", count: 10, color: "#FF0F00"},{name: "toto", count: 10, color: "#FF0F00"}]; 从 Ajax 查询成功,这工作正常!我得到图表...

所以问题仍然是我从我的 php 文件中获取的格式...我找不到要返回的正确格式。

编辑: 如果我这样做:

success: function(data) {
    $("#omg").html(data);
    [...]
    chart.dataProvider = data;
    [...]
}

这是打印在页面上: [{"name":"Brussels","count":"4","color":"#FF0F00"},{"name":"Chimay","count":"2","color":"#FF6600"}] 并显示一个空图表。

如果复制粘贴打印表格作为数据:

success: function(data) {
    $("#omg").html(data);
    [...]
    chart.dataProvider =  [{"name":"Brussels","count":"4","color":"#FF0F00"},{"name":"Chimay","count":"2","color":"#FF6600"}];
    [...]
}

图表显示的很好。

最佳答案

通过这样做解决:

$.getJSON("statComPerMenu.php",  // le fichier qui recevra la requête
          null,  // les paramètres
          function(data){  // la fonction qui traitera l'objet reçu
          [...]
          chart.dataProvider = data;
          [...]
});

查看此以了解有关 $.getJSON(法语)的更多信息:http://www.hooba.ca/blog/2008/echange-dobjets-json-entre-php-et-javascript-facile-grace-a-jquery/

关于php - Amchart 和 Ajax 以不正确的格式获取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11050163/

相关文章:

带数组的 Javascript 模块模式

javascript - jQuery UI 按钮在 IE 7 上不起作用

javascript - jQuery AJAX 调用返回 [object Object]

javascript - 在 Spring Controller 方法中发布 JavaScript 对象数组并映射到 Java 域

php - 使用计数返回数组中的差异

php - 如何使用 php 和 mysql 创建唯一的自动编号

javascript - 如何从对象数组中删除元素?

jquery - SSL CORS 不适用于 Zend Guard

php - 需要在线自动填充信息到可填写的PDF,能够编辑数据,然后直接保存到服务器

php - JS 和 PHP 的本地化文件