php结合highcharts和Ajax获取数据失败 ajaxphpjqueryhighcharts 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 $('#container').highcharts({ title: { text: 园区用电统计一览表</a>' }, xAxis: { categories: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月'] }, yAxis:{ title:{ text:'{$title}(单位:{$unit})' } }, series:{$statistics} }); 你代码太多,看不下去,静态代码贴出来了!数据放到series里就行了,这里的$statistics是后台生成传过来的,自己在传过来之前打印$statistics看看是不是json数据就行了 我已经打印了下,但是出不来,你看下 这么的代码require ('inc/config.php');require (MYSQL);$city = $_POST['city'] ? $_POST['city'] : 0;$start_time = $_POST['start_time'] ? $_POST['start_time'] : '';$end_time = $_POST['end_time'] ? $_POST['end_time'] : '';$sql = '';if($start_time && $end_time){ $sql = " fcj.city_id='".$city."' AND fcj.fang_time >='".$start_time."' AND fcj.fang_time<='".$_POST['end_time']."'";}else if($start_time){ $sql = " fcj.city_id='".$city."' AND fcj.fang_time ='".$start_time."'";}else if($end_time){ $sql = " fcj.city_id='".$city."' AND fcj.fang_time ='".$end_time."'";}else{ $sql = " fcj.city_id='".$city."'";}$q = "SELECT fcj.fang_time, fcj.area, fcj.taoshu FROM f_chengjiao AS fcj LEFT JOIN f_city AS fc USING (city_id) WHERE ".$sql." GROUP BY fcj.fang_time";$r = mysqli_query ($conn, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($conn));if (@mysqli_num_rows($r) > 0) { while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) { $date_list[] = $row[0]; //获取时间 $area_list[] = intval($row[1]); //获取面积,并转换为数字整型 $num_list[] = intval($row[2]); //获取套数,并转换为数字整型 echo json_encode($area_list); } mysqli_free_result ($r);} mysqli_close($conn);?> 你的 echo json_encode($area_list); 在读取查询数据的循环内这样将输出多组 json 格式数据,但对于 js 而言却是错误的所以要移到循环外 你有 var data = eval('('+data+')'); for(var i=0;i<data.length;i++) { date_list[date_list.length] = data[i].date; if(data[i].num=='')data[i].num=0; num_list[num_list.length] = parseInt(data[i].num); area_list[area_list.length] = parseFloat(data[i].area); }显然 data 是 json而 php 是 while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) { $date_list[] = $row[0]; //获取时间 $area_list[] = intval($row[1]); //获取面积,并转换为数字整型 $num_list[] = intval($row[2]); //获取套数,并转换为数字整型 echo json_encode($area_list); }如果 echo json_encode($area_list); 仅仅是测试用的话,那你连数据都没有输出按照 js 要去的数据格式,至少应为 while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) { $data[] = array('date' => $row[0], 'num' => $row[1], 'area' => $row[2]); } echo json_encode($data);虽然你并不欢迎我的帮助,但我还是忍不住要说两句 我没有不欢迎,我都不知道这句话是从什么地方说起你上面修过方法我之前也发现了,一样不能让走势图出现我是写法是 while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) { $arr[] = array( $row[0],intval($row[1]),intval($row[2]) ); //$date_list[] = $row[0]; //获取时间 //$area_list[] = intval($row[1]); //获取面积,并转换为数字整型 //$num_list[] = intval($row[2]); //获取套数,并转换为数字整型 } $data = json_encode($arr); echo $data;我现在都纠结了,不知道错是在php还是在ajax这块了 转换到 json 时,下标数组转换为数组,关联数组转换为对象你的代码需要的是对象 php为什么会自动停止执行 正则 如何匹配特定字符前的数字 并输出最大的 抓取图片 现在有多少人自已开发系统做站的? 【计算】农行助学贷款 利息计算逾期应该缴纳多少总额? 数组函数问题 一个<Tr>判断取色的问题 关于zend 如何判断socket状态?? PHPEXECL导入数据库乱码的问题 php读取mysql速度问题 集成环境XAMPP安装的wordpress怎么更改外网访问IP
$('#container').highcharts({
title: {
text: 园区用电统计一览表</a>'
},
xAxis: {
categories: ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']
},
yAxis:{
title:{
text:'{$title}(单位:{$unit})'
}
},
series:{$statistics}
}); 你代码太多,看不下去,静态代码贴出来了!数据放到series里就行了,这里的$statistics是后台生成传过来的,自己在传过来之前打印$statistics看看是不是json数据就行了
require ('inc/config.php');
require (MYSQL);
$city = $_POST['city'] ? $_POST['city'] : 0;
$start_time = $_POST['start_time'] ? $_POST['start_time'] : '';
$end_time = $_POST['end_time'] ? $_POST['end_time'] : '';
$sql = '';
if($start_time && $end_time){
$sql = " fcj.city_id='".$city."' AND fcj.fang_time >='".$start_time."' AND fcj.fang_time<='".$_POST['end_time']."'";
}else if($start_time)
{
$sql = " fcj.city_id='".$city."' AND fcj.fang_time ='".$start_time."'";
}else if($end_time)
{
$sql = " fcj.city_id='".$city."' AND fcj.fang_time ='".$end_time."'";
}else
{
$sql = " fcj.city_id='".$city."'";
}
$q = "SELECT fcj.fang_time, fcj.area, fcj.taoshu FROM f_chengjiao AS fcj LEFT JOIN f_city AS fc USING (city_id) WHERE ".$sql." GROUP BY fcj.fang_time";
$r = mysqli_query ($conn, $q) or trigger_error("Query: $q\n<br />MySQL Error: " . mysqli_error($conn));
if (@mysqli_num_rows($r) > 0) {
while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) {
$date_list[] = $row[0]; //获取时间
$area_list[] = intval($row[1]); //获取面积,并转换为数字整型
$num_list[] = intval($row[2]); //获取套数,并转换为数字整型
echo json_encode($area_list);
}
mysqli_free_result ($r);
}
mysqli_close($conn);
?>
这样将输出多组 json 格式数据,但对于 js 而言却是错误的
所以要移到循环外
var data = eval('('+data+')');
for(var i=0;i<data.length;i++)
{
date_list[date_list.length] = data[i].date;
if(data[i].num=='')data[i].num=0;
num_list[num_list.length] = parseInt(data[i].num);
area_list[area_list.length] = parseFloat(data[i].area);
}
显然 data 是 json
而 php 是
while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) {
$date_list[] = $row[0]; //获取时间
$area_list[] = intval($row[1]); //获取面积,并转换为数字整型
$num_list[] = intval($row[2]); //获取套数,并转换为数字整型
echo json_encode($area_list);
}
如果 echo json_encode($area_list); 仅仅是测试用的话,那你连数据都没有输出
按照 js 要去的数据格式,至少应为
while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) {
$data[] = array('date' => $row[0], 'num' => $row[1], 'area' => $row[2]);
}
echo json_encode($data);虽然你并不欢迎我的帮助,但我还是忍不住要说两句
我没有不欢迎,我都不知道这句话是从什么地方说起
你上面修过方法我之前也发现了,一样不能让走势图出现我是写法是
while ($row = mysqli_fetch_array ($r, MYSQLI_NUM)) {
$arr[] = array(
$row[0],intval($row[1]),intval($row[2])
);
//$date_list[] = $row[0]; //获取时间
//$area_list[] = intval($row[1]); //获取面积,并转换为数字整型
//$num_list[] = intval($row[2]); //获取套数,并转换为数字整型
} $data = json_encode($arr);
echo $data;我现在都纠结了,不知道错是在php还是在ajax这块了
你的代码需要的是对象