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

use*_*744 1 php charts json 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>
Run Code Online (Sandbox Code Playgroud)

这是我的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);


?>
Run Code Online (Sandbox Code Playgroud)

这个文件输出是:它与谷歌图表需要的一样,我不明白问题出在哪里.在做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"}]}
]
}
Run Code Online (Sandbox Code Playgroud)

Ant*_*vić 6

调用arrayToDataTable()是错误的,因为提交数据不是数组.方法DataTable()应该用来代替new:

var data = new google.visualization.DataTable($parse.jsonData(jsonData));
Run Code Online (Sandbox Code Playgroud)

此外,Q1的类型更改为"数字",也使用了值.

请参阅jsbin上的示例