表中没有行-使用PHP和AJAX的谷歌饼图
我得到“表没有列”错误。请参阅下面的链接 是什么导致了这个问题 在提供的链接上,您可以看到XHR下的JSON输出 是否可以使用相同的JSON输出但不同的数据集绘制多个图表(饼图、条形图) 视图:表中没有行-使用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
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});
});
}