簡體   English   中英

Google圖表和未捕獲的錯誤:無效的JSON字符串:

[英]Google Chart and Uncaught Error: Invalid JSON string:

在我的Demo.php中,我按如下所述設置了Google圖表可視化:

<!--Load the AJAX API-->
        <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 jsonPieChartData = $.ajax({
      url: "getVehicleData.php",
      dataType:"json",
      async: false
    }).responseText;

    // Create our data table out of JSON data loaded from server.
    var piechartdata = new google.visualization.DataTable(jsonPieChartData);

        var options = {
          title: 'Vehicles Currently in Stock'
        };

        var chart = new google.visualization.PieChart(document.getElementById('piechart'));

        chart.draw(piechartdata, options);
      }
    </script>

我也有如下所述的getVehicleData腳本,我已經在http://jsonlint.com/上驗證了JSON,但是在Google Chrome上仍然出現錯誤。

 $sql_qry = "SELECT `make`, COUNT(*) as total FROM `vehicle` GROUP BY `make` ORDER BY COUNT(*) DESC";
            $data = perform_query($db, $sql_qry);
        echo '{
    "cols": [
        {
            "id": "",
            "label": "Make",
            "pattern": "",
            "type": "string"
        },
        {
            "id": "",
            "label": "TotalNumber",
            "pattern": "",
            "type": "number"
        }
    ],
    "rows": [';
            foreach ($data as $d){
                //echo $d['make'] . $d['total'];
        echo ' {
            "c": [
                {
                    "v": "'.$d['make'].'",
                    "f": null
                },
                {
                    "v": "'.$d['total'].'",
                    "f": null
                }
            ]
        }';

  }
  echo '] }' ;

以下是我在Google Chrome瀏覽器上遇到的錯誤:

Uncaught Error: Invalid JSON string: {
    "cols": [
        {
            "id": "",
            "label": "Make",
            "pattern": "",
            "type": "string"
        },
        {
            "id": "",
            "label": "TotalNumber",
            "pattern": "",
            "type": "number"
        }
    ],
    "rows": [ {
            "c": [
                {
                    "v": "Vauxhall",
                    "f": null
                },
                {
                    "v": "2",
                    "f": null
                }
            ]
        } {
            "c": [
                {
                    "v": "Ford",
                    "f": null
                },
                {
                    "v": "1",
                    "f": null
                }
            ]
        } {
            "c": [
                {
                    "v": "Toyota",
                    "f": null
                },
                {
                    "v": "1",
                    "f": null
                }
            ]
        } {
            "c": [
                {
                    "v": "Mercedes",
                    "f": null
                },
                {
                    "v": "1",
                    "f": null
                }
            ]
        } {
            "c": [
                {
                    "v": "Citreon",
                    "f": null
                },
                {
                    "v": "1",
                    "f": null
                }
            ]
        }] }
$sql_qry = "SELECT `make`, COUNT(*) as total FROM `vehicle` GROUP BY `make` ORDER BY COUNT(*) DESC";
            $data = perform_query($db, $sql_qry);
        echo '{
    "cols": [
        {
            "id": "",
            "label": "Make",
            "pattern": "",
            "type": "string"
        },
        {
            "id": "",
            "label": "TotalNumber",
            "pattern": "",
            "type": "number"
        }
    ],
    "rows": [';
            foreach ($data as $d){
                //echo $d['make'] . $d['total'];
        echo ' {
            "c": [
                {
                    "v": "'.$d['make'].'",
                    "f": null
                },
                {
                    "v": "'.$d['total'].'",
                    "f": null
                }
            ]
        },'; // added a , here, but I don't know PHP well enough to NOT add the comma for the LAST loop

  }
  echo '] }' ;

看到評論-我不太了解PHP以至於無法抑制它,在foreach的最后一個循環中-我是一個javascript書呆子,我知道足夠多的PHP只是危險

編輯:此重寫可能更好

$sql_qry = "SELECT `make`, COUNT(*) as total FROM `vehicle` GROUP BY `make` ORDER BY COUNT(*) DESC";
$data = perform_query($db, $sql_qry);
$output = '';
foreach ($data as $d){
    if ($output != '') {
        $output .= ',';
    }
    $output .= '{
        "c": [
            {
                "v": "'.$d['make'].'",
                "f": null
            },
            {
                "v": "'.$d['total'].'",
                "f": null
            }
        ]
    }';
}
echo '{
    "cols": [
    {
        "id": "",
        "label": "Make",
        "pattern": "",
        "type": "string"
    },
    {
        "id": "",
        "label": "TotalNumber",
        "pattern": "",
        "type": "number"
    }
],
"rows": [' . $output . '] }' ;

終於在這里進行了排序是答案:

// Connect to the MySQL database  
  require_once('includes/db_connect.php');
  require_once('includes/shared.php');
  $sql_qry = "SELECT `make`, COUNT(*) as total FROM `vehicle` GROUP BY `make` ORDER BY COUNT(*) DESC";
  $res = perform_query($db, $sql_qry);
echo '
{
  "cols": [
        {"id":"","label":"Topping","pattern":"","type":"string"},
        {"id":"","label":"Slices","pattern":"","type":"number"}
      ],
  "rows": [';

$total_rows = $res->fetchColumn();
$row_num = 0;
while($row = $res->fetch(PDO::FETCH_ASSOC)) {
    // do loop stuff
    $row_num++;
    if ($row_num == $total_rows){
        echo '

        {"c":[{"v":"'.$row['make'].'","f":null},{"v":'.$row['total'].',"f":null}]}

            ';

    }else{
        echo '

        {"c":[{"v":"'.$row['make'].'","f":null},{"v":'.$row['total'].',"f":null}]},
            ';

    }
}
echo ']
}';

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM