使用jQuery和Flot插件绘制图表

时间:2013-11-28 08:31:30

标签: jquery mysql css3 graph flot

 <?php

        while($row = mysql_fetch_assoc($sql))
        {
            $dataset1[] = array($row['dateReport'],$row['totalUniqueView']);
        }

        echo json_encode($dataset1);
    ?>

$(document).ready(function () {
    //Graph scripts here.

        var graphData = <?php echo json_encode($dataset1); ?>;

大家好,我需要帮助。我设法遵循这里的教程:http://designmodo.com/create-interactive-graph-css3-jquery/

它完美无缺。我试图修改它,以便它可以从我的数据库中读取数据。从上面的代码中可以看出,我已经更改并添加一些php行并修改脚本。但是,它不起作用,它会向我的图表返回奇怪的数据。请帮忙。

1 个答案:

答案 0 :(得分:3)

好的,那里的数据存在一些问题。

首先,日期/时间必须以JavaScript时间戳的形式提供;摘自the docs

  

Flot中的时间序列支持基于Javascript时间戳,   即,在预期或移交时间值的任何地方,Javascript   使用时间戳号。这是一个数字,而不是Date对象。一个   Javascript时间戳是自1月1日以来的毫秒数,   1970 00:00:00 UTC。这与Unix时间戳几乎相同,除了   它是以毫秒为单位,所以请记住乘以1000!

其次,您的数据用引号括起来,这意味着它将作为字符串而不是数字传递 - 这将停止Flot能够正确绘制数据。来自the FAQ

  

当我使用JSON数据作为源时,Flot不起作用!

     

实际上,Flot喜欢JSON数据,你只是格式错误。双   检查你没有输入字符串而不是数字,比如   [[“0”,“ - 2.13”],[“5”,“4.3”]]。这是最常见的错误,而且   错误可能不会立即显示,因为Javascript可以做一些   自动转换。

您应该能够通过生成以下数据来解决这两个问题:

    while($row = mysql_fetch_assoc($sql))
    {
        $dataset1[] = array(strtotime($row['dateReport']) * 1000, (int)$row['totalUniqueView']);
    }