• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

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

php 搞代码 4年前 (2022-01-25) 22次浏览 已收录 0个评论

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

 <BR>//--查询用户下线信息,返回JSON,用于flash <BR>if(!empty($_GET['action'])&&!empty($_GET['invite'])){ <BR>//固定参数请求才会返回信息 <BR>if($_GET['action']=='getinfo'&&$_GET['invite']==1){ <BR>//数据实体,一个实体类 <BR>class UcInvite{ <BR>//---显示用的数据信息 <BR>public $fuid; //用户id <BR>public $funame; //用户名 <BR>public $furl; //用户空间地址 <BR>//---显示用的数据信息 <BR>public $fchilds; //子类集合 <BR>} <BR>$invitecount = 0; //总数量,用于记录全部下线数量 <BR>//递归实现方法 <BR>function GetShowTreeInvite($uid){ <BR>global $_SGLOBAL,$invitecount; <BR>//组织sql语句并查询,表中fuid是下线的id,uid是父id,fusername是用户名字 <BR>$inv_sql = "select fuid,fusername from ".tname("invite")." where uid = ".$uid; <BR>$inv_query = $_SGLOBAL['db']->query($inv_sql); <BR>//下表及返回数组 <BR>$index = 0; <BR>$inviteTree = Array(); <BR>$invitezcount = 0; //每个子类下的数量 <BR>//循环添加信息到数组 <BR>while($v = $_SGLOBAL['db']->fetch_array($inv_query)){ <BR>$ui = new UcInvite(); <BR>$ui->fuid = $v['fuid']; <BR>$ui->funame = $v['fusername']; <BR>$ui->furl = "/home/space.php?uid=".$v['fuid']; <BR>//调用自己,递归查询子类信息 <BR>$ui->fchilds=GetShowTreeInvite($v['fuid']); <BR>//插入返回的数组中 <BR>$inviteTree[$index]=$ui; <BR>$index++; <BR>$invitecount++; <BR>$invitezcount++; <BR>} <BR>//记录当前下线的下线数量 <BR>$inviteTree['invitezcount'] = $invitezcount; <BR>//返回数组信息 <BR>return $inviteTree; <BR>} <BR>$fuid = empty($_GET['fuid'])?$space[uid]:$_GET['fuid']; <BR>//根据当前登录用户ID查询信息,并返回一个集合 <BR>$inviteTree = GetShowTreeInvite($fuid); <BR>//记录总下线数 <BR>$inviteTree['invitecount'] = $invitecount; <BR>//引入json库,这里用的是Services_JSON <BR>//因为并不确定服务器都是PHP5.2以上版本,所以没有用自带的JSON函数 <BR>require_once('../<a>@本文9来源gao($daima.com搞@代@#码8网^</a><strong>搞代gaodaima码</strong>plugins/JSON/JSON.php'); <BR>//json输出 <BR>$json = new Services_JSON(); <BR>echo $json->encode($inviteTree); <BR>exit; <BR>}else{ <BR>echo '请求参数错误!'; <BR>exit; <BR>} <BR>} <BR>//--查询用户下线信息,返回JSON,用于flash <BR>


以上代码返回一个JSON字符串,如:
{‘0’:{‘fuid’:’950′,’funame’:’郭梓原’,’furl’:’/home/space.php?uid=950′,’fchilds’:{‘invitezcount’:0}},’invitezcount’:1,’invitecount’:1}
这里只查询了一个
接下来用JS进行以下解析:

 <BR><script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> <BR><script type="text/javascript"> <BR>//fuid 用户ID <BR>//funame 用户名称 <BR>//furl 用户主页地址 <BR>//invitezcount 每个用户的子类数量 <BR>//invitecount 该用户的所有下级数量 <BR>var str = ""; <BR>function GetShow(obj,qi,index){ <BR>for (var one in obj) <BR>{ <BR>for(var key in obj[one]) <BR>{ <BR>index++; <BR>if(key=="fchilds"&&obj[one][key]['invitezcount']!=0){ <BR>var aqi = qi; <BR>if(index>1)aqi+="     " <BR>GetShow(obj[one][key],aqi,index) <BR>} <BR>if(key != 'fchilds'){ <BR>if(key=="fuid"){ <BR>str += qi+key+"="+obj[one][key] + ","; <BR>}else{ <BR>str += key+"="+obj[one][key] + ","; <BR>} <BR>if(key == "furl"){ <BR>str+="<br />"; <BR>} <BR>} <BR>} <BR>if(one=="invitezcount"||one=="invitecount"){ <BR>str+=qi+one+"="+obj[one]+"<br />"; <BR>} <BR>} <BR>} <BR>//固定参数do=charadegarden&action=getinfo&invite=1,fuid为测试时使用,不填写将调用系统当前登录的用户ID <BR>var url = 'http://localhost/home/space.php?do=charadegarden&action=getinfo&invite=1&fuid=344'; <BR>$.get(url,function(html){ <BR>//获得json并转为对象 <BR>if(html){ <BR>var obj = eval("["+html+"]"); <BR>GetShow(obj[0],"",1) <BR>document.write(str); <BR>document.write("<br /><br /><br /><br />"); <BR>document.write("<b>JSON格式:</b><br />"); <BR>document.write(html); <BR>} <BR>}); <BR></script> <BR>


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

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


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:php 无限级数据JSON格式及JS解析_php实例
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址