大家好我尝试在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
任何人都可以帮我解决这个问题,我尝试了很多来解决这个问题,但我无法找到错误的位置。
提前致谢。