1

我试图让一个图表显示从 mysql 数据库生成的注册数据。数据格式似乎正确显示,但数据未绘制。请注意,我正在使用 CodeIgniter。

PHP:

public function graph_registrations()
    {
        $send = array();

        $i = 1;
        while($i <= 30){
            $startTime = mktime(0, 0, 0, date('m'), date('d')-$i, date('Y'));     
            $endTime = mktime(23, 59, 59, date('m'), date('d')-$i, date('Y'));
            $data = $this->admin_model->total_users_date($startTime, $endTime);
            $new = array(date("M j", $startTime), $data);
            $send[] = $new;
            $i++;
        }

        echo json_encode($send);
    }

JS:

var jsonData = $.ajax({
          url: default_url+"admin/graph_registrations",
          dataType:"json",
          async: false
          }).responseText;

    console.log(jsonData);

    var graphData = [{
        // Visits
        data: jsonData,
        color: '#71c73e',
        points: { radius: 4, fillColor: '#71c73e' }
    }
];

    // Lines
$.plot($('#graph-lines'), graphData, {
    series: {
        points: {
            show: true,
            radius: 5
        },
        lines: {
            show: true
        },
        shadowSize: 0
    },
    grid: {
        color: '#646464',
        borderColor: 'transparent',
        borderWidth: 20,
        hoverable: true
    },
    xaxis: {
        tickColor: 'transparent',
        tickDecimals: 2
    },
    yaxis: {
        tickSize: 1000
    }
});

如果我手动硬编码数据,一切都会正常工作,但当我通过 ajax 获取数据时就不行。

这是 console.log(jsonData) 产生的:

[["Dec 5",0],["Dec 4",0],["Dec 3",0],["Dec 2",0],["Dec 1",0],["Nov 30",0],["Nov 29",0],["Nov 28",0],["Nov 27",0],["Nov 26",0],["Nov 25",0],["Nov 24",0],["Nov 23",0],["Nov 22",0],["Nov 21",0],["Nov 20",0],["Nov 19",0],["Nov 18",0],["Nov 17",0],["Nov 16",0],["Nov 15",0],["Nov 14",0],["Nov 13",0],["Nov 12",0],["Nov 11",0],["Nov 10",0],["Nov 9",1],["Nov 8",0],["Nov 7",0],["Nov 6",0]] 

我尝试在没有日期和简单数字的情况下进行操作,但它不起作用。

谢谢

4

1 回答 1

0

对我来说,您正试图在拥有数据之前绘制数据。我可以看到您正在使用“async:false”来等待数据加载我宁愿使用默认的“true”选项并将绘图函数放在 $.ajax 的“成功”回调中。

于 2012-12-06T23:04:47.237 回答