表中没有行-使用PHP和AJAX的谷歌饼图

表中没有行-使用PHP和AJAX的谷歌饼图,php,json,codeigniter,Php,Json,Codeigniter,我得到“表没有列”错误。请参阅下面的链接 是什么导致了这个问题 在提供的链接上,您可以看到XHR下的JSON输出 是否可以使用相同的JSON输出但不同的数据集绘制多个图表(饼图、条形图) 视图: google.charts.load('current',{'packages':['corechart']}); google.charts.setOnLoadCallback(过滤数据); 函数过滤器_数据(){ $('filter#u data').html(“”); var action='f

我得到“表没有列”错误。请参阅下面的链接

是什么导致了这个问题

在提供的链接上,您可以看到XHR下的JSON输出

是否可以使用相同的JSON输出但不同的数据集绘制多个图表(饼图、条形图)

视图:

google.charts.load('current',{'packages':['corechart']});
google.charts.setOnLoadCallback(过滤数据);
函数过滤器_数据(){
$('filter#u data').html(“”);
var action='fetch_data';
//var最低价格=$(“#隐藏最低价格”).val();
//var最大价格=$(“#隐藏的最大价格”).val();
var报告期=获取过滤器(“报告期”);
var category=get_filter('category');
var region=get_filter('region');
var partner=get_过滤器(“partner”);
var mapData=$.ajax({
url:“http://admin.millionkidstoschool.org/index.php/enrollments/fetch_data",
类型:“POST”,
数据类型:“JSON”,
数据:{行动:行动,报告期:报告期,类别:类别,地区:地区,合作伙伴:合作伙伴},
/*成功:功能(数据){
$('.filter_data').html(数据.注册);
/*$('#pagination_link').html(data.pagination_link);
}*/
}).responseText;
//使用从服务器加载的JSON数据创建我们的数据表。
var data=新的google.visualization.DataTable(mapData);
//实例化并绘制图表,传入一些选项。
var chart=new google.visualization.PieChart(document.getElementById('filter_data');
绘制图表(数据,{宽度:900,高度:500});
}
控制器:

        $data = $this->db->query($query);



        $result = '';
        $total_ex_nf = '0';
        $total_new_nf = '0';
        $total_formal='0';
        if($data->num_rows() > 0)
        {
            foreach($data->result_array() as $row)
            {
                if($row['category']=='Ex-Non-Formal'){
                    $total_ex_nf += $row['total_enrolled'];
                    //$result .= $total_ex_nf;
                }
                if($row['category']=='New-Non-Formal'){
                    $total_new_nf += $row['total_enrolled'];
                    //$result .= $total_new_nf;
                }
                if($row['category']=='Formal'){
                    $total_formal += $row['total_enrolled'];
                    //$result .= $total_formal;
                }

                $result .= '


                <div class="col-lg-12">
                 <div style="border:1px solid #ccc; border-radius:5px; padding:16px; margin-bottom:16px;">


                  <p>Total Enrollments : '. $row['total_enrolled'].' <br />
                  Partner : '. $row['partner'] .'  <br />
                  Reporting Period : '. $row['reporting_period'] .' <br />
                  Category : '. $row['category'] .'<br />


                  Region : '. $row['region'] .'</p>
                 </div>
                </div>
                ';
            }

            $result .= '<div class="col-lg-12">

            Total Formal: '.$total_ex_nf.' <br/>
            Total Ex-Non-Formal: '.$total_new_nf.' <br/>
            Total New-Non-Formal: '.$total_formal.' <br/>

            </div>';


            $output = array('enrollments' => $result);
        }
        else
        {
            $result = '<h3>No Data Found</h3>';
        }

    $categoryType1 = "Fromal";
    $categoryType2 = "Ex-Non-Fromal";
    $categoryType3 = "New-Non-Fromal";

   $responce->cols[] = array( 
        "id" => "", 
        "label" => "Category", 
        "pattern" => "", 
        "type" => "string" 
    ); 
    $responce->cols[] = array( 
        "id" => "", 
        "label" => "Total Enrolled", 
        "pattern" => "", 
        "type" => "number" 
    ); 

        $responce->rows[0]["c"] = array( 
            array( 
                "v" => "$categoryType1", 
                "f" => null 
            ) , 
            array( 
                "v" => (int)$total_formal, 
                "f" => null 
            )
        ); 

        $responce->rows[1]["c"] = array( 
            array( 
                "v" => "$categoryType2", 
                "f" => null 
            ) , 
            array( 
                "v" => (int)$total_ex_nf, 
                "f" => null 
            )
        ); 

        $responce->rows[2]["c"] = array( 
            array(
                "v" => "$categoryType3", 
                "f" => null 
            ) , 
            array( 
                "v" => (int)$total_new_nf, 
                "f" => null 
            )
        ); 

    echo json_encode($responce);
 }
$data=$this->db->query($query);
$result='';
$total_ex_nf='0';
$total_new_nf='0';
$total_=0';
如果($data->num_rows()>0)
{
foreach($data->result\u array()作为$row)
{
如果($row['category']=='Ex-Non-Formal'){
$total_ex_nf+=$row['total_registered';
//$result.=$total\u ex\u nf;
}
如果($row['category']=='New-Non-Formal'){
$total_new_nf+=$row['total_registered';
//$result.=$total\u new\u nf;
}
如果($row['category']=='Formal'){
$total_formal+=$row['total_registered'];
//$result.=$total\u formal;
}
$result.='
注册总数:'.$row['Total_Registered'].
合作伙伴:'.$row['Partner'].
报告期:'.$row[“报告期”].
类别:'.$row['Category'].
地区:'.$row['Region'].'

'; } $result.=' 正式总计:'.$Total\u ex\u nf.'
非正式前总计:'.$Total\u new\u nf.'
新的非正规总数:'.$Total_Formal.'
'; $output=数组('注册'=>$result); } 其他的 { $result='未找到数据'; } $categoryType1=“Fromal”; $categoryType2=“Ex Non Fromal”; $categoryType3=“新建非Fromal”; $response->cols[]=数组( “id”=>“”, “标签”=>“类别”, “模式”=>“”, “类型”=>“字符串” ); $response->cols[]=数组( “id”=>“”, “标签”=>“注册总数”, “模式”=>“”, “键入”=>“编号” ); $response->rows[0][“c”]=数组( 数组( “v”=>“$categoryType1”, “f”=>null ) , 数组( “v”=>(int)$总计, “f”=>null ) ); $response->rows[1][“c”]=数组( 数组( “v”=>“$categoryType2”, “f”=>null ) , 数组( “v”=>(整数)$总计, “f”=>null ) ); $response->rows[2][“c”]=数组( 排列( “v”=>“$categoryType3”, “f”=>null ) , 数组( “v”=>(int)$total\u new\u nf, “f”=>null ) ); echo json_编码($response); }
jquery ajax函数有一个
.done()
函数,当请求完成并传递数据时触发该函数。访问数据的方式导致您将google图表传递给
jqXHR
对象。有关更多信息,请查看此处:

您可以尝试以下方法:

 google.charts.load('current', {'packages':['corechart']});
        google.charts.setOnLoadCallback(filter_data); 


       function filter_data(){
           $('#filter_data').html("<div id='loading'></div>");
           var action = 'fetch_data';
           //var minimum_price = $('#hidden_minimum_price').val();
           //var maximum_price = $('#hidden_maximum_price').val();
           var reporting_period = get_filter('reporting_period');
           var category = get_filter('category');
           var region = get_filter('region');
           var partner = get_filter('partner');

           var mapData = $.ajax({
               url:"http://admin.millionkidstoschool.org/index.php/enrollments/fetch_data",
               type:"POST",
               dataType:"JSON",
               data:{action:action, reporting_period:reporting_period, category:category, region:region, partner:partner},

                /*success:function(data){
                   $('.filter_data').html(data.enrollments);
                   /*$('#pagination_link').html(data.pagination_link);
               }*/
           }).done(function (mapData) {
               // Create our data table out of JSON data loaded from server. 
               var data = new google.visualization.DataTable(mapData);

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

       }
google.charts.load('current',{'packages':['corechart']});
google.charts.setOnLoadCallback(过滤数据);
函数过滤器_数据(){
$('filter#u data').html(“”);
var action='fetch_data';
//var最低价格=$(“#隐藏最低价格”).val();
//var最大价格=$(“#隐藏的最大价格”).val();
var报告期=获取过滤器(“报告期”);
var category=get_filter('category');
var region=get_filter('region');
var partner=get_过滤器(“partner”);
var mapData=$.ajax({
url:“http://admin.millionkidstoschool.org/index.php/enrollments/fetch_data",
类型:“POST”,
数据类型:“JSON”,
数据:{行动:行动,报告期:报告期,类别:类别,地区:地区,合作伙伴:合作伙伴},
/*成功:功能(数据){
$('.
 google.charts.load('current', {'packages':['corechart']});
        google.charts.setOnLoadCallback(filter_data); 


       function filter_data(){
           $('#filter_data').html("<div id='loading'></div>");
           var action = 'fetch_data';
           //var minimum_price = $('#hidden_minimum_price').val();
           //var maximum_price = $('#hidden_maximum_price').val();
           var reporting_period = get_filter('reporting_period');
           var category = get_filter('category');
           var region = get_filter('region');
           var partner = get_filter('partner');

           var mapData = $.ajax({
               url:"http://admin.millionkidstoschool.org/index.php/enrollments/fetch_data",
               type:"POST",
               dataType:"JSON",
               data:{action:action, reporting_period:reporting_period, category:category, region:region, partner:partner},

                /*success:function(data){
                   $('.filter_data').html(data.enrollments);
                   /*$('#pagination_link').html(data.pagination_link);
               }*/
           }).done(function (mapData) {
               // Create our data table out of JSON data loaded from server. 
               var data = new google.visualization.DataTable(mapData);

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

       }