php 无限级数据JSON格式及JS解析_php教程-查字典教程网
php 无限级数据JSON格式及JS解析
php 无限级数据JSON格式及JS解析
发布时间:2016-12-29 来源:查字典编辑
摘要:Flash需要JSON格式的数据,于是,就有了如下代码:(PHP实现,C#类似,JSON库自己去下吧~~)复制代码代码如下://--查询用户...

Flash需要JSON格式的数据,于是,就有了如下代码:(PHP实现,C#类似,JSON库自己去下吧~~)

复制代码 代码如下:

//--查询用户下线信息,返回JSON,用于flash

if(!empty($_GET['action'])&&!empty($_GET['invite'])){

//固定参数请求才会返回信息

if($_GET['action']=='getinfo'&&$_GET['invite']==1){

//数据实体,一个实体类

class UcInvite{

//---显示用的数据信息

public $fuid; //用户id

public $funame; //用户名

public $furl; //用户空间地址

//---显示用的数据信息

public $fchilds; //子类集合

}

$invitecount = 0; //总数量,用于记录全部下线数量

//递归实现方法

function GetShowTreeInvite($uid){

global $_SGLOBAL,$invitecount;

//组织sql语句并查询,表中fuid是下线的id,uid是父id,fusername是用户名字

$inv_sql = "select fuid,fusername from ".tname("invite")." where uid = ".$uid;

$inv_query = $_SGLOBAL['db']->query($inv_sql);

//下表及返回数组

$index = 0;

$inviteTree = Array();

$invitezcount = 0; //每个子类下的数量

//循环添加信息到数组

while($v = $_SGLOBAL['db']->fetch_array($inv_query)){

$ui = new UcInvite();

$ui->fuid = $v['fuid'];

$ui->funame = $v['fusername'];

$ui->furl = "/home/space.php?uid=".$v['fuid'];

//调用自己,递归查询子类信息

$ui->fchilds=GetShowTreeInvite($v['fuid']);

//插入返回的数组中

$inviteTree[$index]=$ui;

$index++;

$invitecount++;

$invitezcount++;

}

//记录当前下线的下线数量

$inviteTree['invitezcount'] = $invitezcount;

//返回数组信息

return $inviteTree;

}

$fuid = empty($_GET['fuid'])?$space[uid]:$_GET['fuid'];

//根据当前登录用户ID查询信息,并返回一个集合

$inviteTree = GetShowTreeInvite($fuid);

//记录总下线数

$inviteTree['invitecount'] = $invitecount;

//引入json库,这里用的是Services_JSON

//因为并不确定服务器都是PHP5.2以上版本,所以没有用自带的JSON函数

require_once('../plugins/JSON/JSON.php');

//json输出

$json = new Services_JSON();

echo $json->encode($inviteTree);

exit;

}else{

echo '请求参数错误!';

exit;

}

}

//--查询用户下线信息,返回JSON,用于flash

以上代码返回一个JSON字符串,如:

{'0':{'fuid':'950','funame':'郭梓原','furl':'/home/space.php?uid=950','fchilds':{'invitezcount':0}},'invitezcount':1,'invitecount':1}

这里只查询了一个

接下来用JS进行以下解析:

复制代码 代码如下:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<script type="text/javascript">

//fuid 用户ID

//funame 用户名称

//furl 用户主页地址

//invitezcount 每个用户的子类数量

//invitecount 该用户的所有下级数量

var str = "";

function GetShow(obj,qi,index){

for (var one in obj)

{

for(var key in obj[one])

{

index++;

if(key=="fchilds"&&obj[one][key]['invitezcount']!=0){

var aqi = qi;

if(index>1)aqi+=""

GetShow(obj[one][key],aqi,index)

}

if(key != 'fchilds'){

if(key=="fuid"){

str += qi+key+"="+obj[one][key] + ",";

}else{

str += key+"="+obj[one][key] + ",";

}

if(key == "furl"){

str+="<br/>";

}

}

}

if(one=="invitezcount"||one=="invitecount"){

str+=qi+one+"="+obj[one]+"<br/>";

}

}

}

//固定参数do=charadegarden&action=getinfo&invite=1,fuid为测试时使用,不填写将调用系统当前登录的用户ID

var url = 'http://localhost/home/space.php?do=charadegarden&action=getinfo&invite=1&fuid=344';

$.get(url,function(html){

//获得json并转为对象

if(html){

var obj = eval("["+html+"]");

GetShow(obj[0],"",1)

document.write(str);

document.write("<br/><br/><br/><br/>");

document.write("<b>JSON格式:</b><br/>");

document.write(html);

}

});

</script>

这样,两个无限级的操作就完成了,结果截图:

珍惜劳动成果,虽说内容不多,可是也是一个一个字打上的,转载请注明!!关注爱拼可乐吧

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新php教程学习
    热门php教程学习
    编程开发子分类