Google图表未捕获错误:不是数组

时间:2014-01-26 15:15:27

标签: php json charts google-visualization

我收到Uncaught错误不是数组。 这是我的.html文件

 <html>
    <head>
        <!-- Load jQuery -->
        <script language="javascript" type="text/javascript" 
            src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.0/jquery.min.js">
        </script>
        <!-- Load Google JSAPI -->
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
            google.load("visualization", "1", { packages: ["corechart"] });
            google.setOnLoadCallback(drawChart);

            function drawChart() {
                var jsonData = $.ajax({
                    url: "json.php",
                    dataType: "json",
                    async: false
                }).responseText;


                var data = google.visualization.arrayToDataTable($parse.jsonData(jsonData));


                var chart = new google.visualization.LineChart(
                            document.getElementById('chart_div'));
                chart.draw(data, options);
            }

        </script>
    </head>
    <body>
        <div id="chart_div" style="width: 900px; height: 500px;">
        </div>
    </body>
    </html>

这是我的json file.php     

include("dbconfig.inc.php");
$main= array();
$rows=array();
$cols=array();

$main['cols']=array(
    array('label' => 'id', 'type' => 'string'),
    array('label' => 'Q1', 'type' => 'string')
    );
$main['rows']=array();
$sel = "SELECT * FROM mak";
try {
    foreach($dbh->query($sel) as $r) {
        $idd=$r['oid'];
        $select = "SELECT * FROM pol WHERE id='".$idd."' "; 
        foreach($dbh->query($select) as $row) {
            array_push($main['rows'],array('c' => array(
                                                            array('v' => $row['id']), 
                                                            array('v' => $row['pol']), 
                                                            ))  );

        }

    }
}

catch(PDOException $e) {
    echo $e->getMessage();
    die();
}
echo json_encode($main);


?>

这个文件输出是: 它与谷歌图表需要的一样,我不明白问题出在哪里。 在做console.log($ parse.JSON(jsonData)); json对象将显示在控制台上。

{
"cols":
[
{"label":"id","type":"string"},
{"label":"Q1","type":"string"}
],
"rows":
[
{"c":[{"v":"1"},{"v":"123.0000"}]},
{"c":[{"v":"2"},{"v":"456.0000"}]}
]
}

1 个答案:

答案 0 :(得分:6)

调用arrayToDataTable()是错误的,因为提交数据不是数组。方法DataTable()应该与new一起使用,如:

var data = new google.visualization.DataTable($parse.jsonData(jsonData));

此外,Q1的类型更改为“数字”,也使用了值。

请参阅example at jsbin