1

我不认为我完全理解 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 上变得野蛮(成长的痛苦),任何想法都会很棒。

4

1 回答 1

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。

于 2013-06-19T12:56:02.673 回答