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 の「success」コールバックに配置します。

于 2012-12-06T23:04:47.237 に答える