使用JSON PHP的树结构

时间:2018-04-11 05:30:32

标签: javascript php jquery mysql json

大家好我尝试在php中使用JSON在树结构上工作,所以我在数组中获取值,当我打印数组时,它的值正在变得完美但是当我尝试转换为JSON时它没有显示任何页面。

这是我的提取数据:(fetch.php)

<?php 
include ("../include/session.php");
global $database;
$simid = isset($_POST['simid']) ? $_POST['simid'] : 11;
$query = "SELECT 
t1.id AS g_menu_id, t1.ref_page_id AS g_parent_id, t1.description AS grandParent, 
t2.id AS p_menu_id, t2.ref_page_id AS p_parent_id, t2.description AS parent, 
t3.id AS c_menu_id, t3.ref_page_id AS c_parent_id, t3.description AS children 
FROM simulationpages t1 
LEFT JOIN simulationpages t2 ON t2.ref_page_id = t1.id 
left JOIN simulationpages t3 ON t3.ref_page_id = t2.id 
WHERE t1.ref_page_id = 0 AND t1.simid='".$simid."' AND t1.status=1
ORDER BY t1.pagelevel,t2.pagelevel,t3.pagelevel"; 

$result = $database->query($query); 
$data = array(); 
while($row = mysql_fetch_array($result)) 
{ 
if(!array_key_exists($row['g_menu_id'], $data)) 
{ 
$temp = array(); 
$temp['menu_id'] = $row['g_menu_id']; 
$temp['text'] = $row['grandParent']; 
$temp['parent_id'] = $row['g_parent_id']; 

if( trim($row['parent']) != '' ) 
{ 
$parent = array(); 
$parent['menu_id'] = $row['p_menu_id']; 
$parent['text'] = $row['parent']; 
$parent['parent_id'] = $row['p_parent_id']; 
if( trim($row['children']) != '' ) 
{ 
$childrenData = array(); 
$childrenData['menu_id'] = $row['c_menu_id']; 
$childrenData['text'] = $row['children']; 
$childrenData['parent_id'] = $row['c_parent_id']; 
$parent['nodes'][ $childrenData['menu_id'] ] = $childrenData; 
} 
$temp['nodes'][ $parent['menu_id'] ] = $parent; 
} 

$data[ $row['g_menu_id'] ] = $temp; 
} 
else 
{ 
if(! array_key_exists($row['p_menu_id'], $data[ $row['g_menu_id'] ]['nodes'] )) 
{ 
$parent = array(); 
$parent['menu_id'] = $row['p_menu_id']; 
$parent['text'] = $row['parent']; 
$parent['parent_id'] = $row['p_parent_id']; 
if( trim($row['children']) != '' ) 
{ 
$childrenData = array(); 
$childrenData['menu_id'] = $row['c_menu_id']; 
$childrenData['text'] = $row['children']; 
$childrenData['parent_id'] = $row['c_parent_id']; 
$parent['nodes'][ $childrenData['menu_id'] ] = $childrenData; 
} 

$data[ $row['g_menu_id'] ]['nodes'][ $row['p_menu_id'] ] = $parent; 
} 
else 
{ 
if( trim($row['children']) != '' ) 
{ 
$childrenData = array(); 
$childrenData['menu_id'] = $row['c_menu_id']; 
$childrenData['text'] = $row['children']; 
$childrenData['parent_id'] = $row['c_parent_id']; 
$data[ $row['g_menu_id'] ]['nodes'][ $row['p_menu_id'] ]['nodes'][ $childrenData['menu_id'] ] = $childrenData; 
} 
} 
} 
} 

//echo "<pre>"; 
//print_r($data);
echo json_encode($data);
?>

我们跟进了这些教程。

http://www.webslesson.info/2017/05/make-treeview-using-bootstrap-treeview-ajax-jquery-with-php.html

这是我们用于获取数据的ajax代码:

              $.ajax({
                url: "fetch.php",
                method: "POST",
                data: ({simid: <?php echo $simid;?>}),
                dataType: "json",
                success: function (data)
                {

 $('#treeview').treeview({
                        data: data,
                        onNodeSelected: function (event, data) {
                            var m1 = JSON.stringify(data, ['menu_id']);
                            var m2 = jQuery.parseJSON(m1);

                            var s1 = JSON.stringify(data, ['sim_id']);
                            var s2 = jQuery.parseJSON(s1);

                                $.ajax({
                    type: "POST",
                    url: 'content.php?type=tree&nextpageid='+m2.menu_id,

                    success: function() {

                        $('#myContent').html('<iframe src="content.php?type=tree&nextpageid='+m2.menu_id+'" id="winId" style="width:105%;height:550px;border-width: 0px;"></iframe>');

                    }
               });

                        }

                    });
                }
            });

这是我得到的数组结果:

Array
(
    [1] => Array
        (
            [menu_id] => 1
            [text] => Welcome Page
            [parent_id] => 0
        )

    [2] => Array
        (
            [menu_id] => 2
            [text] => Grand Parent
            [parent_id] => 0
            [nodes] => Array
                (
                    [5] => Array
                        (
                            [menu_id] => 5
                            [text] => Parent page 2
                            [parent_id] => 2
                        )

                    [3] => Array
                        (
                            [menu_id] => 3
                            [text] => Parent page 1
                            [parent_id] => 2
                            [nodes] => Array
                                (
                                    [4] => Array
                                        (
                                            [menu_id] => 4
                                            [text] => Children page 1
                                            [parent_id] => 3
                                        )

                                )

                        )

                )

        )

)

我在控制台中遇到错误,如未捕获的TypeError:无法设置undefined bootstrap-treeview.min.js的属性'nodeId':1

任何人都可以帮我解决这个问题,我尝试了很多来解决这个问题,但我无法找到错误的位置。

提前致谢。

0 个答案:

没有答案