将数据库数组传递给 flot

passing database array to flot

我有一个 php 文件,其中 returns 一个 json 编码的数组数组,格式如下:

[["2005","93"],["2006","98"],["2007","104"],["2008","120"],["2009","88"],["2010","104"],["2011","78"],["2012","96"],["2013","89"],["2014","100"],["2015","20"]]   

我想在浮点图中使用这些数据,但什么也没有发生。这是我的 jquery 浮动代码(带有浮动轴标签)。 #byYear 是我的 html 中的 div 图表所在的位置:

$.post('php/get_peoplebyyear.php', 
     function(output){              
            $(function () {
                var options = {
                    xaxis: {
                        axisLabel: 'year',
                        axisLabelUseCanvas: true,
                        axisLabelFontSizePixels: 20,
                        axisLabelFontFamily: 'Arial'
                    },
                    yaxis: {
                        axisLabel: 'number',
                        axisLabelUseCanvas: true
                    }
                };
                console.log(output);
                $.plot($("#byYear"),
                        [output],
                      options
                );
            });
     });

当我使用这段代码时,我的图表上没有出现任何点。这可能是我的一个小错误,但是请告诉我我做错了什么?

数据格式正确,但您的回调函数有误。删除

$(function () {

开始和一个

});

在函数结束时。

这就是我解决它的方法 - 基本上,flot 没有将我的数据库查询的输出解释为数组的数组,即使我将我的数据库查询的输出复制并粘贴到 flot 代码中,浮图有效。

所以我所做的是创建两个数组,数据和坐标。然后我 json 解析数据库输出并输入坐标,一次一对输入坐标,然后将每个坐标推送到数据中:

$.post('php/get_myprogram.php', 
                 function(output){
                        var obj = jQuery.parseJSON( output );
                        var data = [];
                        var coordinate = [];
                        for (var i = 0; i< obj.length; i++) {

                            coordinate.push(obj[i][0]);
                            coordinate.push(obj[i][1]);
                            data.push(coordinate);
                            coordinate = [];
                        }

                            var options = {
                                xaxis: {
                                    axisLabel: 'year',
                                    axisLabelUseCanvas: true,
                                    axisLabelFontSizePixels: 20,
                                    axisLabelFontFamily: 'Arial'
                                },
                                yaxis: {
                                    axisLabel: 'number',
                                    axisLabelUseCanvas: true
                                }
                            };


                            $.plot($("#byYear"),
                                    [data],
                                   options
                            );

                 });