在JQuery中解析多维json数组

时间:2011-01-26 14:44:11

标签: jquery json parsing multidimensional-array

我将json数组引入Jquery - 没问题,你如何解析一个多维数组,你可能有“子”数组。

PHP来“创建”从数据库中拉出的json

   $STH = $DBH->query("SELECT FID FROM flist WHERE ParentID='0'" );
$STH->setFetchMode(PDO::FETCH_OBJ);
while( $row = $STH->fetch()) : 
 $farray[$row->FID]['FID']  = $row->FID;
  $RTH = $DBH->query("SELECT FID FROM flist WHERE ParentID= ".$row->FID." " );
  $RTH->setFetchMode(PDO::FETCH_OBJ);
  $fquerycount = $RTH->rowCount();
  if($fquerycount!=0): 
   while( $res = $RTH->fetch()) : 
    $farray[$row->FID]['FCHILD'][$res->FID] = $res->FID;
   endwhile;
  endif;
endwhile;

编码:

echo  $jc . '(' . json_encode($forum)  . ')';

注意:$ jc是一个jsoncallback。

现在你如何在这里“阅读”它:

   $.getJSON("http://127.0.1/jtest3.php?start=0&jsoncallback=?", function(data){ 
$.each(data, function(i,item){         
$('#testit').append('<li'+item.FID+'<ul><li>'+item.FCHILD+'</li><ul></li>');
}); 
});

在我看来 - 好吧我确定它必须 - 子数组的另一个.each()循环?代码适用于除显示子项之外的所有方面。如果我从子数组中删除[$ res-&gt; FID]键,那就没问题,但显然我只得到最后一个数据库条目,问题是子数组是多于一个条目。您将拥有1个父项(生成$farray[$row->FID]['FID'] = $row->FID;的第一个查询),然后是第二个查询的子项,即$farray[$row->FID]['FCHILD'][$res->FID] = $res->FID;现在此数组中可能有2个,10个,20个等。你如何运行第二个循环?非常感谢。感谢

1 个答案:

答案 0 :(得分:0)

检查此帖子Writing Multidemisional Array jQuery并更具体地说明此评论

“javascript中没有多维数组,但是你可以拥有一个元素为数组的数组”

所以是的,你必须检查每个数组元素是否也是一个数组并循环通过它。