Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/251.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表没有列-Google图表-PHP AJAX_Javascript_Php_Jquery_Ajax_Google Visualization - Fatal编程技术网

Javascript 表没有列-Google图表-PHP AJAX

Javascript 表没有列-Google图表-PHP AJAX,javascript,php,jquery,ajax,google-visualization,Javascript,Php,Jquery,Ajax,Google Visualization,我今天开始学习如何使用谷歌图表,我有点被卡住了 我有动态数据(每天变化3-4次)输入图表(饼图)。我使用AJAX作为数据源,PHP作为后端。。我试着这样做,但没有成功: 阿贾克斯: 下一步就是调用这些数据,我从谷歌图表的“连接到数据库”(或类似的)页面获取代码: //加载可视化API和piechart包。 load('visualization','1',{'packages':['corechart']}); //将回调设置为在加载Google Visualization API时运行。 s

我今天开始学习如何使用谷歌图表,我有点被卡住了

我有动态数据(每天变化3-4次)输入图表(饼图)。我使用AJAX作为数据源,PHP作为后端。。我试着这样做,但没有成功:

阿贾克斯:

下一步就是调用这些数据,我从谷歌图表的“连接到数据库”(或类似的)页面获取代码:


//加载可视化API和piechart包。
load('visualization','1',{'packages':['corechart']});
//将回调设置为在加载Google Visualization API时运行。
setOnLoadCallback(drawChart);
函数绘图图(){
var jsonData=$.ajax({
url:“/ajax/charts/membershiptotals.php”,
数据类型:“json”,
异步:false
}).responseText;
//使用从服务器加载的JSON数据创建我们的数据表。
var data=新的google.visualization.DataTable(jsonData);
//实例化并绘制图表,传入一些选项。
var chart=new google.visualization.PieChart(document.getElementById('chart_div');
绘制图表(数据,{宽度:400,高度:240});
}
重新加载网页会产生以下错误:

表中没有列


我不明白为什么。。我查看了其他解决方案,并在Quora和Google group上发布了API,但没有效果。。有人能告诉我代码有什么问题吗???

这是要传递的数组的格式

javascript:

var jsondata; //json data recived from php script
var data = google.visualization.arrayToDataTable(jsondata);
php:

您必须传递Json数组而不是对象。

我找到了答案:

AJAX更改为:

<?php

    include $_SERVER['DOCUMENT_ROOT'].'/includes/galaxy-connect.php';

    $database = new Connection();
    $database = $database->Connect();
    $statement = $database->Prepare(" SELECT COUNT(Membership_Level_Name) AS MemTotal, Membership_Level_Name
                FROM membership AS M
                LEFT JOIN membership_levels AS L
                                ON M.`Membership_Level_Id` = L.`Membership_Level_Id`
                LEFT JOIN membership_status AS S
                                                                                                                        ON M.`MembershipStatusId` = S.MembershipStatusId
                                                                                                                        WHERE M.`MembershipStatusId` = 1
                                GROUP BY L.`Membership_Level_Name`
        ORDER BY L.`Membership_Level_Id` ");
    $statement->execute();
    $MembershipTotals = $statement->fetchall(PDO::FETCH_OBJ);   


    $col1=array();
    $col1["id"]="";
    $col1["label"]="Membership Type";
    $col1["pattern"]="";
    $col1["type"]="string";

    $col2=array();
    $col2["id"]="";
    $col2["label"]="Total";
    $col2["pattern"]="";
    $col2["type"]="number";

    $cols = array($col1,$col2);

    $rows=array();

        foreach ($MembershipTotals AS $MembershipTotal) {  //foreach ($Event->TrainingTotals['ConfirmedTotal'] AS $Key => $Value) {
            $cell0["v"]=$MembershipTotal->Membership_Level_Name;
            $cell1["v"]=intval($MembershipTotal->MemTotal);

        $row0["c"]=array($cell0,$cell1);
        array_push($rows, $row0);
        }

    $data=array("cols"=>$cols,"rows"=>$rows);
    echo json_encode($data);

  <script type="text/javascript" src="https://www.google.com/jsapi"></script>
    <script type="text/javascript">

    // Load the Visualization API and the piechart package.
    google.load('visualization', '1', {'packages':['corechart']});

    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);

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

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

      // Instantiate and draw our chart, passing in some options.
      var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
      chart.draw(data, {width: 400, height: 240});
    }


    </script>
var jsondata; //json data recived from php script
var data = google.visualization.arrayToDataTable(jsondata);
$data = array(
    array('Membership Level', 'MemTotal'),
      array('Member Plus', 170),
      array('Member', 131)
    );
echo json_encode($data);
<?php

    include $_SERVER['DOCUMENT_ROOT'].'/includes/galaxy-connect.php';

    $database = new Connection();
    $database = $database->Connect();
    $statement = $database->Prepare(" SELECT COUNT(Membership_Level_Name) AS MemTotal, Membership_Level_Name
                FROM membership AS M
                LEFT JOIN membership_levels AS L
                                ON M.`Membership_Level_Id` = L.`Membership_Level_Id`
                LEFT JOIN membership_status AS S
                                                                                                                        ON M.`MembershipStatusId` = S.MembershipStatusId
                                                                                                                        WHERE M.`MembershipStatusId` = 1
                                GROUP BY L.`Membership_Level_Name`
        ORDER BY L.`Membership_Level_Id` ");
    $statement->execute();
    $MembershipTotals = $statement->fetchall(PDO::FETCH_OBJ);   


    $col1=array();
    $col1["id"]="";
    $col1["label"]="Membership Type";
    $col1["pattern"]="";
    $col1["type"]="string";

    $col2=array();
    $col2["id"]="";
    $col2["label"]="Total";
    $col2["pattern"]="";
    $col2["type"]="number";

    $cols = array($col1,$col2);

    $rows=array();

        foreach ($MembershipTotals AS $MembershipTotal) {  //foreach ($Event->TrainingTotals['ConfirmedTotal'] AS $Key => $Value) {
            $cell0["v"]=$MembershipTotal->Membership_Level_Name;
            $cell1["v"]=intval($MembershipTotal->MemTotal);

        $row0["c"]=array($cell0,$cell1);
        array_push($rows, $row0);
        }

    $data=array("cols"=>$cols,"rows"=>$rows);
    echo json_encode($data);
<script type="text/javascript">
    // Load the Visualization API and the piechart package.
    google.load('visualization', '1', {'packages':['corechart']});

    // Set a callback to run when the Google Visualization API is loaded.
    google.setOnLoadCallback(drawChart);
    function drawChart() {
        var jsonData = $.ajax({
            url: "/ajax/charts/membershiptotals.php",
            dataType:"json",
            async: false
        }).responseText;

    // Create our data table out of JSON data loaded from server.
    var data = new google.visualization.DataTable(jsonData);
    var chart = new google.visualization.PieChart(document.getElementById('chart_div'));
        chart.draw(data, {title:'Membership Bookings', width: 800, height: 500});
    }


</script>