php 無(wú)限級(jí)數(shù)據(jù)JSON格式及JS解析
//--查詢(xún)用戶(hù)下線信息,返回JSON,用于flash
if(!empty($_GET['action'])&&!empty($_GET['invite'])){
//固定參數(shù)請(qǐng)求才會(huì)返回信息
if($_GET['action']=='getinfo'&&$_GET['invite']==1){
//數(shù)據(jù)實(shí)體,一個(gè)實(shí)體類(lèi)
class UcInvite{
//---顯示用的數(shù)據(jù)信息
public $fuid; //用戶(hù)id
public $funame; //用戶(hù)名
public $furl; //用戶(hù)空間地址
//---顯示用的數(shù)據(jù)信息
public $fchilds; //子類(lèi)集合
}
$invitecount = 0; //總數(shù)量,用于記錄全部下線數(shù)量
//遞歸實(shí)現(xiàn)方法
function GetShowTreeInvite($uid){
global $_SGLOBAL,$invitecount;
//組織sql語(yǔ)句并查詢(xún),表中fuid是下線的id,uid是父id,fusername是用戶(hù)名字
$inv_sql = "select fuid,fusername from ".tname("invite")." where uid = ".$uid;
$inv_query = $_SGLOBAL['db']->query($inv_sql);
//下表及返回?cái)?shù)組
$index = 0;
$inviteTree = Array();
$invitezcount = 0; //每個(gè)子類(lèi)下的數(shù)量
//循環(huán)添加信息到數(shù)組
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'];
//調(diào)用自己,遞歸查詢(xún)子類(lèi)信息
$ui->fchilds=GetShowTreeInvite($v['fuid']);
//插入返回的數(shù)組中
$inviteTree[$index]=$ui;
$index++;
$invitecount++;
$invitezcount++;
}
//記錄當(dāng)前下線的下線數(shù)量
$inviteTree['invitezcount'] = $invitezcount;
//返回?cái)?shù)組信息
return $inviteTree;
}
$fuid = empty($_GET['fuid'])?$space[uid]:$_GET['fuid'];
//根據(jù)當(dāng)前登錄用戶(hù)ID查詢(xún)信息,并返回一個(gè)集合
$inviteTree = GetShowTreeInvite($fuid);
//記錄總下線數(shù)
$inviteTree['invitecount'] = $invitecount;
//引入json庫(kù),這里用的是Services_JSON
//因?yàn)椴⒉淮_定服務(wù)器都是PHP5.2以上版本,所以沒(méi)有用自帶的JSON函數(shù)
require_once('../plugins/JSON/JSON.php');
//json輸出
$json = new Services_JSON();
echo $json->encode($inviteTree);
exit;
}else{
echo '請(qǐng)求參數(shù)錯(cuò)誤!';
exit;
}
}
//--查詢(xún)用戶(hù)下線信息,返回JSON,用于flash
以上代碼返回一個(gè)JSON字符串,如:
{'0':{'fuid':'950','funame':'郭梓原','furl':'/home/space.php?uid=950','fchilds':{'invitezcount':0}},'invitezcount':1,'invitecount':1}
這里只查詢(xún)了一個(gè)
接下來(lái)用JS進(jìn)行以下解析:
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
//fuid 用戶(hù)ID
//funame 用戶(hù)名稱(chēng)
//furl 用戶(hù)主頁(yè)地址
//invitezcount 每個(gè)用戶(hù)的子類(lèi)數(shù)量
//invitecount 該用戶(hù)的所有下級(jí)數(shù)量
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/>";
}
}
}
//固定參數(shù)do=charadegarden&action=getinfo&invite=1,fuid為測(cè)試時(shí)使用,不填寫(xiě)將調(diào)用系統(tǒng)當(dāng)前登錄的用戶(hù)ID
var url = 'http://localhost/home/space.php?do=charadegarden&action=getinfo&invite=1&fuid=344';
$.get(url,function(html){
//獲得json并轉(zhuǎn)為對(duì)象
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>
這樣,兩個(gè)無(wú)限級(jí)的操作就完成了,結(jié)果截圖:
珍惜勞動(dòng)成果,雖說(shuō)內(nèi)容不多,可是也是一個(gè)一個(gè)字打上的,轉(zhuǎn)載請(qǐng)注明!!關(guān)注愛(ài)拼可樂(lè)吧
- 基于BootStrap Metronic開(kāi)發(fā)框架經(jīng)驗(yàn)小結(jié)【二】列表分頁(yè)處理和插件JSTree的使用
- jsTree 基于JQuery的排序節(jié)點(diǎn) Bug
- jquery下jstree簡(jiǎn)單應(yīng)用 - v1.0
- jquery.jstree 增加節(jié)點(diǎn)的雙擊事件代碼
- 基于jsTree的無(wú)限級(jí)樹(shù)JSON數(shù)據(jù)的轉(zhuǎn)換代碼
- JQery jstree 大數(shù)據(jù)量問(wèn)題解決方法
- jsTree樹(shù)控件(基于jQuery, 超強(qiáng)悍)[推薦]
- 關(guān)于無(wú)限分級(jí)(ASP+數(shù)據(jù)庫(kù)+JS)的實(shí)現(xiàn)代碼
- js實(shí)現(xiàn)無(wú)限級(jí)樹(shù)形導(dǎo)航列表效果代碼
- json+jQuery實(shí)現(xiàn)的無(wú)限級(jí)樹(shù)形菜單效果代碼
- javascript實(shí)現(xiàn)無(wú)限級(jí)select聯(lián)動(dòng)菜單
- 基于jquery的無(wú)限級(jí)聯(lián)下拉框js插件
- js無(wú)限級(jí)折疊菜單精簡(jiǎn)版
- PHP+JS無(wú)限級(jí)可伸縮菜單詳解(簡(jiǎn)單易懂)
- jstree創(chuàng)建無(wú)限分級(jí)樹(shù)的方法【基于ajax動(dòng)態(tài)創(chuàng)建子節(jié)點(diǎn)】
相關(guān)文章
php遞歸獲取目錄內(nèi)文件(包含子目錄)封裝類(lèi)分享
php遞歸獲取目錄內(nèi)文件封裝類(lèi)分享,可以遞歸子目錄2013-12-12php上傳文件,創(chuàng)建遞歸目錄的實(shí)例代碼
這篇文章介紹了php上傳文件,創(chuàng)建遞歸目錄的實(shí)例代碼,有需要的朋友可以參考一下2013-10-10一個(gè)實(shí)用的php驗(yàn)證碼類(lèi)
這篇文章主要為大家詳細(xì)介紹了一個(gè)實(shí)用的php驗(yàn)證碼類(lèi),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07Laravel框架控制器的middleware中間件用法分析
這篇文章主要介紹了Laravel框架控制器的middleware中間件用法,結(jié)合具體案例形式分析了Laravel框架控制器的middleware中間件相關(guān)使用步驟、操作技巧與注意事項(xiàng),需要的朋友可以參考下2019-09-09php數(shù)據(jù)序列化測(cè)試實(shí)例詳解
這篇文章主要介紹了php數(shù)據(jù)序列化測(cè)試實(shí)例詳解的相關(guān)資料,主要介紹msgpack、json、serialize對(duì)比,需要的朋友可以參考下2017-08-08WordPress過(guò)濾垃圾評(píng)論的幾種主要方法小結(jié)
不僅是中文的,WordPress用戶(hù)經(jīng)常還會(huì)受到英文日文等各種國(guó)外垃圾評(píng)論的騷擾,這里我們就來(lái)看一下WordPress過(guò)濾垃圾評(píng)論的幾種主要方法小結(jié):2016-07-07php處理靜態(tài)頁(yè)面:頁(yè)面設(shè)置緩存時(shí)間實(shí)例
本篇文章主要介紹了php處理靜態(tài)頁(yè)面:頁(yè)面設(shè)置緩存時(shí)間實(shí)例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-06-06