php 无限级数据JSON格式及JS解析


Posted in PHP onJuly 17, 2010

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 无限级数据JSON格式及JS解析

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

PHP 相关文章推荐
PHP编码规范-php coding standard
Mar 16 PHP
PHP验证码类代码( 最新修改,完全定制化! )
Dec 02 PHP
兼容firefox,chrome的网页灰度效果
Aug 08 PHP
php漏洞之跨网站请求伪造与防止伪造方法
Aug 15 PHP
php 判断字符串中是否包含html标签
Feb 17 PHP
PHP对文件夹递归执行chmod命令的方法
Jun 19 PHP
WordPress中用于获取文章作者与分类信息的方法整理
Dec 17 PHP
thinkphp中U方法按路由规则生成url的方法
Mar 12 PHP
PHP使用文件锁解决高并发问题示例
Mar 29 PHP
PHP精确到毫秒秒杀倒计时实例详解
Mar 14 PHP
对laravel in 查询的使用方法详解
Oct 09 PHP
php经典趣味算法实例代码
Jan 21 PHP
php下使用strpos需要注意 === 运算符
Jul 17 #PHP
按上下级层次关系输出内容的PHP代码
Jul 17 #PHP
PHP开发负载均衡指南
Jul 17 #PHP
PHP无敌近乎加密方式!
Jul 17 #PHP
生成ubuntu自动切换壁纸xml文件的php代码
Jul 17 #PHP
PHP实现多条件查询实例代码
Jul 17 #PHP
php程序效率优化的一些策略小结
Jul 17 #PHP
You might like
海贼王动画变成“真人”后,凯多神还原,雷利太帅了!
2020/04/09 日漫
PHP 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
php 判断是否是中文/英文/数字示例代码
2013/09/30 PHP
PHP使用glob函数遍历目录或文件夹的方法
2014/12/16 PHP
php给图片加文字水印
2015/07/31 PHP
PHP实现微信模拟登陆并给用户发送消息的方法【文字,图片,图文】
2017/06/29 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
Domino中运用jQuery读取视图内容的方法
2009/10/21 Javascript
js的写法基础分析
2011/01/17 Javascript
JQuery里面的几种选择器 查找满足条件的元素$(&quot;#控件ID&quot;)
2011/08/23 Javascript
javascript与Python快速排序实例对比
2015/08/10 Javascript
基于JavaScript将表单序列化类型的数据转化成对象的处理(允许对象中包含对象)
2015/12/28 Javascript
jQuery实现区域打印功能代码详解
2016/06/17 Javascript
解决前端跨域问题方案汇总
2016/11/20 Javascript
Bootstrap的popover(弹出框)2秒后定时消失的实现代码
2017/02/27 Javascript
基于jQuery Easyui实现登陆框界面
2017/07/10 jQuery
详谈Node.js之操作文件系统
2017/08/29 Javascript
使用Angular CLI从蓝本生成代码详解
2018/03/24 Javascript
使用React手写一个对话框或模态框的方法示例
2019/04/25 Javascript
Vue 实现简易多行滚动&quot;弹幕&quot;效果
2020/01/02 Javascript
vue组件中节流函数的失效的原因和解决方法
2020/12/02 Vue.js
Python标准库06之子进程 (subprocess包) 详解
2016/12/07 Python
sublime text 3配置使用python操作方法
2017/06/11 Python
python使用tornado实现简单爬虫
2018/07/28 Python
对Pytorch神经网络初始化kaiming分布详解
2019/08/18 Python
Pycharm和Idea支持的vim插件的方法
2020/02/21 Python
Django使用rest_framework写出API
2020/05/21 Python
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
PHP中如何使用Cookie
2015/10/28 面试题
银行求职推荐信范文
2013/11/30 职场文书
新驾驶员个人自我评价
2014/01/03 职场文书
计算机多媒体专业自荐信
2014/07/04 职场文书
商业企业管理专业求职信
2014/07/10 职场文书
2016年社区“6.26”禁毒日宣传活动总结
2016/04/05 职场文书
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server