通过AJAX加载jqPlot

时间:2013-06-19 12:35:13

标签: javascript jquery json jqplot

我不认为我完全理解JSON,这是我的代码:

$.ajax({
            type: "POST",
            url: baseurl + "analytics/grab_points"
        }).done(function(data) {
            console.log(data);
            var line1=$.parseJSON(data);
            console.log(line1);
            var plot2 = $.jqplot('chartdiv', line1, {
                title: 'Customized Date Axis',
                gridPadding: {right: 35},
                axes: {
                    xaxis: {
                        renderer: $.jqplot.DateAxisRenderer,
                        tickOptions: {formatString: '%b %#d, %y'},
                        min: 'May 30, 2008',
                        tickInterval: '1 month'
                    }
                },
                series: [{lineWidth: 4, markerOptions: {style: 'square'}}]
            });
        });

jqPlot似乎期望这样的数据:

[['2008-06-28 8:00AM', 4], ['2008-6-30 8:00AM', 1], ['2008-8-30 8:00AM', 5.7]]

(应该是var line1 中的内容)

我的服务器端代码(PHP):

$test=array(
            "2008-06-28 8:00AM" =>4,
            "2008-6-30 8:00AM" =>1,
            "2008-8-30 8:00AM" =>5.7,
        );

        echo json_encode($test);

我的控制台记录:

{"2008-06-28 8:00AM":4,"2008-6-30 8:00AM":1,"2008-8-30 8:00AM":5.7} analytics:103
Object {2008-06-28 8:00AM: 4, 2008-6-30 8:00AM: 1, 2008-8-30 8:00AM: 5.7} analytics:105
Uncaught Error: No data specified 

我很确定我会对这个JSON(成长的痛苦)采取野蛮行为,任何想法都会很棒。

1 个答案:

答案 0 :(得分:0)

如果你想获得jqPlot想要的结构,你将不得不在php代码中更改你的数组......

jqPlot期待像你的php数组结构:

$test = array(
    array("2008-06-28 8:00AM",4),
    array("2008-6-30 8:00AM",1)
);

检查http://php.net/manual/en/function.json-encode.php上的示例2($ c)

你看到的{}只是因为你输出它作为对象而不是数组,但这应该与[]相同(这也在php手册中解释)

编辑:我也不认为这一行:var line1=$.parseJSON(data);仍然需要,因为你的data已经是json。