将数据库数组传递给flot

时间:2015-04-16 18:16:56

标签: jquery flot

我有一个php文件,它以这种格式返回一个json编码的数组数组:

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

我想在flot图中使用这些数据,但没有任何事情发生。这是我的jquery flot代码(使用flot-axislabels)。 #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
                );
            });
     });

使用此代码时,我的图表上没有任何点。这对我来说可能是一个小小的,愚蠢的错误,但是有什么能告诉我我做错了什么吗?

2 个答案:

答案 0 :(得分:0)

数据格式正确,但回调函数错误。

删除
$(function () {

在开始时和一个

});

在你的功能结束时。

答案 1 :(得分:0)

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

所以我做的是创建两个数组,数据和坐标。然后我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
                            );

                 });