Я перетаскиваю массивы 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-> FID] из дочернего массива, то это нормально, но, очевидно, я получу только последнюю запись в БД. Проблема в том, что дочерний массив содержит более 1 записи. У вас будет 1 родитель (первый запрос, который выдает $farray[$row->FID]['FID'] = $row->FID;
), а затем дочерний элемент второго запроса, т.е. $farray[$row->FID]['FCHILD'][$res->FID] = $res->FID;
Теперь в этом массиве может быть 2, 10, 20 и т. Д. Как вы запускаете эту секунду каждый цикл? Помощь высоко ценится. Спасибо