最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

php 無限級數(shù)據(jù)JSON格式及JS解析

 更新時間:2010年07月17日 23:57:45   作者:  
公司要做個Flash效果的頁面,需要個無限級樹,顯示用戶邀請的好友及其下線,由此就構(gòu)成了無限級的關(guān)系,可能下線有無限多。
Flash需要JSON格式的數(shù)據(jù),于是,就有了如下代碼:(PHP實現(xiàn),C#類似,JSON庫自己去下吧~~)
復(fù)制代碼 代碼如下:

//--查詢用戶下線信息,返回JSON,用于flash
if(!empty($_GET['action'])&&!empty($_GET['invite'])){
//固定參數(shù)請求才會返回信息
if($_GET['action']=='getinfo'&&$_GET['invite']==1){
//數(shù)據(jù)實體,一個實體類
class UcInvite{
//---顯示用的數(shù)據(jù)信息
public $fuid; //用戶id
public $funame; //用戶名
public $furl; //用戶空間地址
//---顯示用的數(shù)據(jù)信息
public $fchilds; //子類集合
}
$invitecount = 0; //總數(shù)量,用于記錄全部下線數(shù)量
//遞歸實現(xiàn)方法
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);
//下表及返回數(shù)組
$index = 0;
$inviteTree = Array();
$invitezcount = 0; //每個子類下的數(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)用自己,遞歸查詢子類信息
$ui->fchilds=GetShowTreeInvite($v['fuid']);
//插入返回的數(shù)組中
$inviteTree[$index]=$ui;
$index++;
$invitecount++;
$invitezcount++;
}
//記錄當前下線的下線數(shù)量
$inviteTree['invitezcount'] = $invitezcount;
//返回數(shù)組信息
return $inviteTree;
}
$fuid = empty($_GET['fuid'])?$space[uid]:$_GET['fuid'];
//根據(jù)當前登錄用戶ID查詢信息,并返回一個集合
$inviteTree = GetShowTreeInvite($fuid);
//記錄總下線數(shù)
$inviteTree['invitecount'] = $invitecount;
//引入json庫,這里用的是Services_JSON
//因為并不確定服務(wù)器都是PHP5.2以上版本,所以沒有用自帶的JSON函數(shù)
require_once('../plugins/JSON/JSON.php');
//json輸出
$json = new Services_JSON();
echo $json->encode($inviteTree);
exit;
}else{
echo '請求參數(shù)錯誤!';
exit;
}
}
//--查詢用戶下線信息,返回JSON,用于flash

以上代碼返回一個JSON字符串,如:
{'0':{'fuid':'950','funame':'郭梓原','furl':'/home/space.php?uid=950','fchilds':{'invitezcount':0}},'invitezcount':1,'invitecount':1}
這里只查詢了一個
接下來用JS進行以下解析:
復(fù)制代碼 代碼如下:

<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 每個用戶的子類數(shù)量
//invitecount 該用戶的所有下級數(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+="&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
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為測試時使用,不填寫將調(diào)用系統(tǒng)當前登錄的用戶ID
var url = 'http://localhost/home/space.php?do=charadegarden&action=getinfo&invite=1&fuid=344';
$.get(url,function(html){
//獲得json并轉(zhuǎn)為對象
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>

這樣,兩個無限級的操作就完成了,結(jié)果截圖:

珍惜勞動成果,雖說內(nèi)容不多,可是也是一個一個字打上的,轉(zhuǎn)載請注明??!關(guān)注愛拼可樂吧

相關(guān)文章

  • php上傳文件常見問題總結(jié)

    php上傳文件常見問題總結(jié)

    這篇文章主要介紹了php上傳文件常見問題總結(jié),基本上經(jīng)常碰到的問題的處理都列了出來,有需要的小伙伴參考下。
    2015-02-02
  • 全面了解PHP中的全局變量

    全面了解PHP中的全局變量

    下面小編就為大家?guī)硪黄媪私釶HP中的全局變量。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • PHP集成百度Ueditor 1.4.3

    PHP集成百度Ueditor 1.4.3

    我們在做項目的時候經(jīng)常要遇到編輯器問題,就目前來看百度編輯器還是首選,今天我們就來看下如何在php中集成百度Ueditor,有相同需要的小伙伴參考下吧
    2014-11-11
  • CentOS7.0下安裝PHP5.6.30服務(wù)的教程詳解

    CentOS7.0下安裝PHP5.6.30服務(wù)的教程詳解

    這篇文章主要介紹了CentOS7.0下安裝PHP5.6.30服務(wù)的教程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • Laravel 6.2 中添加了可調(diào)用容器對象的方法

    Laravel 6.2 中添加了可調(diào)用容器對象的方法

    Laravel小組上周發(fā)布了v6.2.0 版本,接下來通過本文給大家分享Laravel 6.2 中添加了可調(diào)用容器對象的方法,需要的朋友可以參考下
    2019-10-10
  • 優(yōu)化WordPress的Google字體以加速國內(nèi)服務(wù)器上的運行

    優(yōu)化WordPress的Google字體以加速國內(nèi)服務(wù)器上的運行

    這篇文章主要介紹了優(yōu)化WordPress的Google字體以加速國內(nèi)服務(wù)器上的運行的方法,由于谷歌在內(nèi)地被墻導(dǎo)致其更新等方面都收到不同程度的影響,需要的朋友可以參考下
    2015-11-11
  • YII框架行為behaviors用法示例

    YII框架行為behaviors用法示例

    這篇文章主要介紹了YII框架行為behaviors用法,結(jié)合實例形式分析了Yii框架行為behaviors的添加與使用簡單操作技巧,需要的朋友可以參考下
    2019-04-04
  • smarty簡單應(yīng)用實例

    smarty簡單應(yīng)用實例

    這篇文章主要介紹了smarty簡單應(yīng)用實例,簡單介紹了smarty中數(shù)據(jù)庫查詢、數(shù)組遍歷及調(diào)用模板顯示數(shù)據(jù)的相關(guān)技巧,簡單易懂,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • 淺析Yii2緩存的使用

    淺析Yii2緩存的使用

    一個有緩存的框架可以說是一個好的框架。下面小編通過本文給大家介紹yii2中是如何使用緩存的,非常具有參考借鑒價值,感興趣的朋友一起學(xué)習吧
    2016-05-05
  • thinkPHP多表查詢及分頁功能實現(xiàn)方法示例

    thinkPHP多表查詢及分頁功能實現(xiàn)方法示例

    這篇文章主要介紹了thinkPHP多表查詢及分頁功能實現(xiàn)方法,結(jié)合具體實例形式分析了thinkPHP多表查詢以及查詢結(jié)果的分頁顯示相關(guān)實現(xiàn)技巧,需要的朋友可以參考下
    2017-07-07

最新評論

汝州市| 穆棱市| 洪洞县| 巴青县| 喀喇沁旗| 武平县| 新邵县| 长沙县| 碌曲县| 凭祥市| 张家界市| 诸暨市| 常熟市| 突泉县| 鄯善县| 昭苏县| 博湖县| 且末县| 武宣县| 常熟市| 泽库县| 崇阳县| 古丈县| 柳江县| 惠来县| 页游| 西安市| 邹平县| 法库县| 班戈县| 通化市| 涪陵区| 滦平县| 武汉市| 太谷县| 望城县| 体育| 荆门市| 吴堡县| 江源县| 邵武市|