我需要JSON格式和Flot Chart插件的值

时间:2018-03-26 23:21:23

标签: javascript php mysql ajax flot

我想从mysql数据库中获取数据,使用Flot插件将其放入图表中,根据docs数据格式是一个点数组:[ [x1, y1], [x2, y2], ... ]。在我的情况下,我想获得日期和销售价值并将其放在这个数组中,所以我做了这个:

<?php 
 $sql = "SELECT * from sales where YEAR(date)='2013'";
 $res = mysql_query($sql);
 $return = [];

 while($row = mysql_fetch_array($res)){
    $return[] = [$row['date'],$row['amount']];
 }

 echo '{ "label": "Sales", "data":'. json_encode($return, JSON_UNESCAPED_UNICODE).'}';
?>

我得到的结果如下:

{ "label": "Sales", "data":[["2013-02-01","52"],["2013-03-01","40"],["2013-03-28","200"]]}

我尝试通过AJAX提供此信息:

var sales;

    $.ajax({
        url: "scripts/sales.php",
        type: "GET",
        dataType: "json",
        success: function(resp)
        {
            sales = [$.trim(resp.data)];
            console.log(sales);
        }
    });

但不幸的是我没有获得相同的格式,控制台的结果是这样的:

["2013-02-01,52,2013-03-01,40,2013-03-28,280"]

我希望得到这样的格式:

[["2013-02-01","52"],["2013-03-01","40"],["2013-03-28","200"]]

我该如何解决?我想要一些帮助。

1 个答案:

答案 0 :(得分:2)

尝试json_encode整个对象,而不是在PHP中将字符串与json_encode连接起来:

echo json_encode(array("label" => "Sales", "data" => $return));

然后代替

sales = [$.trim(resp.data)];

只需访问普通的.data属性:

sales = resp.data;