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 时,下标数组转换为数组,关联数组转换为对象你的代码需要的是对象 这个IF语句出什么问题了~在线请高手~!! 【小小問題】使用GB2312做的網頁,臺灣、香港、澳門的瀏覽者可是正常瀏覽網頁嗎? 请问网页上经常更换的图片是不是存在数据库里呀?? Warning: Unknown():这个警告什么意思 访问数据库问题 php连接mysql不成功问题 关于imagecrete()函数的奇怪的问题 一段QQ在线的程序,但运行时出错了,不知道怎么解决,解决马上给高分在线等 fwrite的问题。 为什么会出现这样的缘故,怎样解决 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这块了
你的代码需要的是对象