本人纯菜鸟 求大神帮助 写了一个demo准备把数据库的数据通过json的方式由JS前端获取 现在问题出在 前端页面获取php函数返回值时 。demo大概分为如下页面
conn.php连接数据库
getdata.php 构建了一个类 类里有不同的方法 以便提取数据库不同列的内容
AjaxService.php 含有多个php自定义函数 建立getdata里的类利用类方法获取不同返回值
index.html 利用ajax获取AjaxService.php页面的输出 目前conn页面到AjaxService都有数据 唯独AjaxService到index页面数据读不出来 按照别人例子写的ajax代码如下
//ajax获取后台dateline数据
function fetchDateline(){
var arr=new Array();
$.ajax(
{
url:"AjaxService.php?method=GetDateline",
dataType:"text",
success:function(data)
{
//调用函数获取值,转换成数组模式
var ss=eval(data);
for(var i=0;i<ss.length;i++)
{
arr.push(ss[i]);
}
}
});
return arr;
}
getdata.php<?php
require_once('conn.php');
class tPower{
//获取x轴的日期数据
public function GetDateline()
{
$pg=@pg_connect("host=localhost user=zjjtest password=zjj123 dbname=zjjtest")
or die("can't connect to database.");
$query="select dateline from t_power order by dateline";
$result=@pg_query($pg,$query) or die("can't run query to table.");
$data = array();
while($row=pg_fetch_row($result))
{
array_push($data,$row);
}
return $data;
}
//获取y轴的实际用电量 public function GetAP()
{
$pg=@pg_connect("host=localhost user=zjjtest password=zjj123 dbname=zjjtest")
or die("can't connect to database.");
$query="select actual_power from t_power order by dateline";
$result=@pg_query($pg,$query) or die("can't run query to table.");
$data = array();
while($row=pg_fetch_row($result))
{
array_push($data,$row);
}
return $data;
} //获取y轴的预期用电量 public function GetEP()
{
$pg=@pg_connect("host=localhost user=zjjtest password=zjj123 dbname=zjjtest")
or die("can't connect to database.");
$query="select expected_power from t_power order by dateline";
$result=@pg_query($pg,$query) or die("can't run query to table.");
$data = array();
while($row=pg_fetch_row($result))
{
array_push($data,$row);
}
return $data;
} }
?>AjaxService.php<?php
//通过本文件新建getdata文件中定义的对象,并调用对象的相应方法获取数据库数据的json形式数据以备传送前台js
//获取日期
require_once('conn.php');
function GetDateline(){
require_once('getdata.php');
$tPower = new tPower();
$data = $tPower->GetDateline();
$json = json_encode($data);
print_r($json);
}
//获取实际用电量
function GetAP(){
require_once('getdata.php');
$tPower = new tPower();
$data = $tPower->GetAP();
$json = json_encode($data);
print_r($json);
}
//获取预期用电量
function GetEP(){
require_once('getdata.php');
$tPower = new tPower();
$data = $tPower->GetEP();
$json = json_encode($data);
print_r($json);
} ?>
哪位高手能帮忙指导一下问题出在哪里 十分感谢
此外前端js能否查看ajax返回来的数据对象 如果有我也好确定一下是否ajax这里就没传过来 或是传过来了是index其他地方调用错了
conn.php连接数据库
getdata.php 构建了一个类 类里有不同的方法 以便提取数据库不同列的内容
AjaxService.php 含有多个php自定义函数 建立getdata里的类利用类方法获取不同返回值
index.html 利用ajax获取AjaxService.php页面的输出 目前conn页面到AjaxService都有数据 唯独AjaxService到index页面数据读不出来 按照别人例子写的ajax代码如下
//ajax获取后台dateline数据
function fetchDateline(){
var arr=new Array();
$.ajax(
{
url:"AjaxService.php?method=GetDateline",
dataType:"text",
success:function(data)
{
//调用函数获取值,转换成数组模式
var ss=eval(data);
for(var i=0;i<ss.length;i++)
{
arr.push(ss[i]);
}
}
});
return arr;
}
getdata.php<?php
require_once('conn.php');
class tPower{
//获取x轴的日期数据
public function GetDateline()
{
$pg=@pg_connect("host=localhost user=zjjtest password=zjj123 dbname=zjjtest")
or die("can't connect to database.");
$query="select dateline from t_power order by dateline";
$result=@pg_query($pg,$query) or die("can't run query to table.");
$data = array();
while($row=pg_fetch_row($result))
{
array_push($data,$row);
}
return $data;
}
//获取y轴的实际用电量 public function GetAP()
{
$pg=@pg_connect("host=localhost user=zjjtest password=zjj123 dbname=zjjtest")
or die("can't connect to database.");
$query="select actual_power from t_power order by dateline";
$result=@pg_query($pg,$query) or die("can't run query to table.");
$data = array();
while($row=pg_fetch_row($result))
{
array_push($data,$row);
}
return $data;
} //获取y轴的预期用电量 public function GetEP()
{
$pg=@pg_connect("host=localhost user=zjjtest password=zjj123 dbname=zjjtest")
or die("can't connect to database.");
$query="select expected_power from t_power order by dateline";
$result=@pg_query($pg,$query) or die("can't run query to table.");
$data = array();
while($row=pg_fetch_row($result))
{
array_push($data,$row);
}
return $data;
} }
?>AjaxService.php<?php
//通过本文件新建getdata文件中定义的对象,并调用对象的相应方法获取数据库数据的json形式数据以备传送前台js
//获取日期
require_once('conn.php');
function GetDateline(){
require_once('getdata.php');
$tPower = new tPower();
$data = $tPower->GetDateline();
$json = json_encode($data);
print_r($json);
}
//获取实际用电量
function GetAP(){
require_once('getdata.php');
$tPower = new tPower();
$data = $tPower->GetAP();
$json = json_encode($data);
print_r($json);
}
//获取预期用电量
function GetEP(){
require_once('getdata.php');
$tPower = new tPower();
$data = $tPower->GetEP();
$json = json_encode($data);
print_r($json);
} ?>
哪位高手能帮忙指导一下问题出在哪里 十分感谢
此外前端js能否查看ajax返回来的数据对象 如果有我也好确定一下是否ajax这里就没传过来 或是传过来了是index其他地方调用错了
//ajax获取后台dateline数据
function fetchDateline(){
var arr=new Array();
$.ajax(
{
url:"AjaxService.php?method=GetDateline",
dataType:"text",
success:function(data)
{
//调用函数获取值,转换成数组模式
var ss=eval(data);
for(var i=0;i<ss.length;i++)
{
arr.push(ss[i]);
}
}
});
return arr;
} 我以为
url:"AjaxService.php?method=GetDateline",
这个语句就是调用了来着 能否基于上面的代码能给我一个正确调用的例子 不然我两眼一抹黑 method=GetDateline 看上去倒像是调用了 但不知怎么的没调到的感觉 囧
php 怎么知道你会去调用 GetDateline ?
起码也得有 $_GET['method']();你当是框架呐
约莫理解到一点 看来问题出在ajax参数传递上 我再去试试 不行再来请教 谢谢
$.ajax(
{
url:"AjaxService.php",
data:{action:"GetEP"},
dataType:"text",
success:function(data)
{
var ss=eval(data);
for(var i=0;i<ss.length;i++)
{
arr.push(ss[i]);
}
}
});可我从chrome浏览器里source查看却提示
“uncaught typeerror:cannot read property 'length' of undefined”
是我jQuery的版本问题么 还是我写错了 SS传过来的是后台getdata.php(完整代码在一楼)中函数的返回值 摸不着头脑
{
alert(data); //你现在这里看一下得到的都是什么
var ss=eval(data);
for(var i=0;i<ss.length;i++)
{
arr.push(ss[i]);
}
}
弹了一个框 是空白的 除了确定按钮 看来是值没传过来 。。
难道AjaxService.php中的
$json = json_encode($data);
print_r($json);
的写法是错的?
不应该啊 我在AjaxService.php测试页面中使用如下代码是能够显示出$json中字符串的
$Dateline=call_user_func('GetDateline');
浏览器地址栏:http://localhost/AjaxService.php?action=GetEP
能看到什么?
补充一下 AjaxService.php页面输出print_r($json)的结果为:
["2016-01-01","2016-01-02","2016-01-03","2016-01-04","2016-01-05","2016-01-06","2016-01-07","2016-01-08","2016-01-09","2016-01-10","2016-01-11","2016-01-12","2016-01-13","2016-01-14","2016-01-15","2016-01-16","2016-01-17","2016-01-18","2016-01-19","2016-01-20"]
<?php
echo bin2hex(file_get_contents('http://localhost/AjaxService.php?action=GetEP'));
运行后能看到什么?