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

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>

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

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

时间: 2025-01-26 10:39:59

php 无限级数据JSON格式及JS解析_php实例的相关文章

json解析-请问这样的json格式该怎样解析?具体的实体类该怎么定义?每个item的属性个数不一样,这样该怎么定义属性?

问题描述 请问这样的json格式该怎样解析?具体的实体类该怎么定义?每个item的属性个数不一样,这样该怎么定义属性? {result"":""200""//String类型成功时返回200newsList"": [ {type"":1//type为1时是新闻,2是广告,3.图酷title"":""""//新闻标题img"":&

python 把数据 json格式输出的实例代码_python

有个要求需要在python的标准输出时候显示json格式数据,如果缩进显示查看数据效果会很好,这里使用json的包会有很多操作 import json date = {u'versions': [{u'status': u'CURRENT', u'id': u'v2.3', u'links': [{u'href': u'http://controller:9292/v2/', u'rel': u'self'}]}, {u'status': u'SUPPORTED', u'id': u'v2.2'

PHP json格式和js json格式 js跨域调用实现代码_php技巧

先看一个js函数 复制代码 代码如下: function jsontest() { var json = [{'username':'crystal','userage':'20'},{'username':'candy','userage':'24'}]; alert(json[1].username); var json2 = [['crystal','20'],['candy','24']]; alert(json2[0][0]); } 这个函数,第一个alert(json[1].user

json格式值班表解析

这几天因为一些特殊原因,网站值班表不能用,一旦出现问题,找相应系统的值班人员,就比较困难了,但通过一些渠道,可以有一个文本文件,其中包含了这几天的值班信息,为了更明白的说明问题,我们假设有A系统和B系统,两个值班,其中A系统值班人员为,每人值一天, B系统值班人员为,每人值一天, json格式的文件,准确的说,应该是json数组,如下所示, {    "dlist": [        {            "dId": "1743664",

Java 通过http get post 请求网络数据 json格式

问题描述 Java如何通过http请求网络数据数据是Json格式的或者推荐一个Java用来通过http请求网络数据的框架也行Android里面的http请求和一些框架为什么不能用在java里面?? 解决方案 解决方案二:最好把代码贴出来,不要搞个错的出来,解决方案三://接口请求地址Stringuri="这里就是你请求的接口地址";URLurl=newURL(uri);url.openStream();解决方案四:用HTTPClient来做.

关于人人网生成JSON格式的JS文件的问题

问题描述 在人人网的完善个人信息的页面中有http://s.xnimg.cn/a13819/allunivlist.js这样一个JS文件,这里面存放着国家,和省份(也有学校)的数据,俺想问一下,这样的数据是不是直接在后台用IO流生成的?这些数据都是很难变化的,这样做有什么好处?希望大家给点思路....... 问题补充:如果生成这样的JS文件,直接用IO把数据写入到JS文件吗? 解决方案 引用如果生成这样的JS文件,直接用IO把数据写入到JS文件吗? 可以在数据库中保存这些数据,在页面中做一个维护

PHP读取mssql json数据中文乱码的解决办法_php实例

PHP及网页使用UTF-8编码,数据库是sql server2008,使用默认编码(936,即GBK编码) 当读取数据库数据时,使用php自带的json_encode()返回到前端,结果中文不显示. 解决办法如下: 这样,sql server 2008中的中文就可以在网页正常显示了. 如果要将中文正常插入到sql server 2008中,还要加入一条代码:$query = iconv("utf-8", "gbk//ignore", $query);//为了解决中文

把普通对象转换成json格式的对象的简单实例_json

1.什么叫做JSON? JSON只是一种数据格式(它不是一种新的数据类型) var obj = {name: "中国", age: 5000};//->普通格式的对象 var jsonObj = {"name": "中国", "age": 5000};//->JSON格式的对象 (只要把普通对象的属性名用""(不能是'')包起来,这样的格式就是我们JSON格式的对象) var data = [

JS解析XML实例分析_javascript技巧

本文实例讲述了JS解析XML的方法.分享给大家供大家参考.具体实现方法如下: <script type="javascript"> var txt="<note>"; txt=txt+"<to>George</to>"; txt=txt+"<from>John</from>"; txt=txt+"<heading>Reminder&l