Flot通过ajax加载多个系列

时间:2013-12-06 09:11:39

标签: ajax json plugins flot

我正在尝试使用ajax加载多个系列,但暂时没有成功...

这是一个有效的代码,有一个系列。

在php文件中:

echo '{
 "label": "Marge",
"data": [[1356998400000, 0], [1359676800000, 0], [1362096000000, 0], [1364770800000, 0], [1367362800000, 0], [1370041200000, 0], [1372633200000, 0], [1375311600000, 0], [1377990000000, 0], [1380582000000, 6926.92], [1383264000000, 7236.18], [1385856000000, 10.25]],
"color": "#3a8ce5"
}';

在js文件中:

var options = {
        xaxis: {
            min: (new Date(2012, 12, 1)).getTime(),
            max: (new Date(2013, 11, 2)).getTime(),
            mode: "time",
            tickSize: [1, "month"],
            monthNames: ["Jan", "Fev", "Mar", "Avr", "Mai", "Jui", "Jul", "Aou", "Sep", "Oct", "Nov", "Dec"],
        },
        series: {
            lines: {
                show: true, 
                fill: true
            },
            points: {
                show: true,
            }
        },
        grid: { hoverable: true, clickable: true },
        legend: {
            show: false
        }
    };


    var data = [];

    $.plot("#flot-audience", data, options);

    var dataurl = 'ajax/stats-ca.php';

    function onDataReceived(series) {


        data.push(series);      

        $.plot("#flot-audience", data, options);
    }

    $.ajax({
        url: dataurl,
        type: "GET",
        dataType: "json",
        success: onDataReceived
    });

当我尝试将php代码更改为下一个代码时,图表上没有显示任何内容,y轴从-1.0变为1.0。

echo '{
"stats": [ 
       {
       "label": "CA",
       "data": [[1356998400000, 0], [1359676800000, 0], [1362096000000, 0], [1364770800000, 0], [1367362800000, 0], [1370041200000, 0], [1372633200000, 0], [1375311600000, 0], [1377990000000, 0], [1380582000000, 24837.53], [1383264000000, 20210.38], [1385856000000, 952.72]],
       "color": "#3a8ce5" 
       },
       {
       "label": "Marge",
       "data": [[1356998400000, 0], [1359676800000, 0], [1362096000000, 0], [1364770800000, 0], [1367362800000, 0], [1370041200000, 0], [1372633200000, 0], [1375311600000, 0], [1377990000000, 0], [1380582000000, 6926.92], [1383264000000, 7236.18], [1385856000000, 10.25]],
       "color": "#fa8ce5"
       }
     ]
 }';

有人能告诉我我做错了吗?

非常感谢

2 个答案:

答案 0 :(得分:0)

我认为在推送数据系列时,您还有一组额外的括号。看看这个模拟http://jsfiddle.net/KMTjZ/9/。我提醒了两个值,所以你可以看看。

//Push
alert(JSON.stringify(data));

//Without
alert(JSON.stringify(stats));

答案 1 :(得分:0)

您需要使用series.stats而不仅仅是系列,因为您的传入数据现在具有额外的级别。