JS Tree不显示数据

时间:2018-05-30 06:20:26

标签: javascript php mysql jstree

我正在尝试使用JS Tree向用户显示用户可以访问的页面,正在从后端正确获取数据,因为我在网络部分可以看到相同的内容(在按F12打开Developer Tool之后) )但它没有显示出来。

以下是我写的JS:

$(document).ready(function () {
    var url = '../../controller/usermgmt/rolemgmt.php';

    var cbArray = [],
        cbCount = 0;
    var staff = "";   
    $('#staffType').change(function () {
        staff = $(this).val();
        //        $('[type="checkbox"]').each(function(){
        //            $(this).prop('checked', false);
        //        })
        //   alert(staff);
        htm = ' <ul class="jstree-container-ul jstree-children jstree-wholerow-ul jstree-no-dots" role="group">';
        if (staff != "") {
            cbCount = 0;
            cbArray = [];
            $.ajax({
                url: url,
                type: 'post',
                dataType: 'json',
                data: {
                    reason: 'searchRole',
                    staff: staff
                },
                success: function (suc) {

                    if (suc['status'] == true) {
                        var parent_menu = suc['parent_menu'];
                        var sub_menu = suc['child_menu'];
                       // alert(sub_menu.length);
                        var inner_menu = '';
                        var count = 0;
                    //alert(parent_menu);
                         //$("#tree_2").html("hello");
                        createJSTree(suc['parent_menu']);
                       //console.log( suc['parent_menu']) ;


                    }
                }, 
                error: function (error) {
                    alert(error);
                }
            });
        }
    });

      function createJSTree(parent_menu) {
        $('#tree_2').jstree({
            'core': {
                'data': parent_menu
            }
        });
    }


});

以下是控制器文件:

   <?php
    include_once dirname(dirname(dirname(__FILE__))) . "/const.php";
    include_once CONFIG_PATH . '/modal/usermgmt/rolemgmt.php';
    require(CONFIG_PATH . "/config1.php");

    $reason = isset($_POST['reason'])?$_POST['reason']:"";



    $pgname = array();
    $pgpath = array();
    $parent_menu=array();
    $sub_menu=array(); 
    $child_page_count=0;



    function fill_access_content1($conn){
        $arr = [];
        $res = modal_fill_access_content($conn);

         foreach($res as $row){
            if($row['parent_link_id'] == 0){
                //Only checkbox.
                ?>
                <input name="chbox" id="<?php echo $row['pk_page_id'] ?>" type="checkbox" /><?php echo $row['alias_name'] ?>  <br><br>
        <?php
            }else{
                //Collapsible.
        ?>

            <button id="<?php echo $row['pk_page_id'] ?>" name="collapsible" data-toggle="collapse" class="btn btn-link btn-lg col<?php echo $row['pk_page_id'] ?>" data-target="#div<?php echo $row['pk_page_id'] ?>">+</button><input class="parent" name="chbox" id="<?php echo $row['pk_page_id'] ?>" type="checkbox" /><?php echo $row['alias_name'] ?><br><br>

            <div name="<?php echo $row['pk_page_id'] ?>" class="cbcls<?php echo $row['pk_page_id'] ?>" id="div<?php echo $row['pk_page_id'] ?>" class="collapse">

            </div>
        <?php
            $obj = (object)[
                'pkid' => $row['pk_page_id'],
                'child' => $row['parent_link_id'],
            ];

            $arr[] = $obj;
            }
        }
        $_SESSION['page_parent_array'] = $arr;

    }

    if($reason == "search"){

        if (session_status() == PHP_SESSION_NONE) {
            session_start();
        }

        $id = $_POST['id'];

        $arr = [];

        $arr = $_SESSION['page_parent_array'];

        foreach($arr as $obj){
            if($obj->pkid == $id){
                $child = $obj->child;
                break;
            }
        }
        $val = [];
        $val = searchChildren($conn, $child);
        echo json_encode($val);
    }

    if($reason == "insert"){
        $cb = $_POST['chckBox'];
        $staff = $_POST['staff'];

        $val = insertRole($conn, $staff, $cb);

        echo json_encode($val);
    }

    if($reason == "searchRole"){
        $staff = $_POST['staff'];
       $_SESSION['drop_down_staff_role_id'] =$_POST['staff'];
      //  $val = searchRole($conn, $staff);

        $page_name_by_roles=(array)getMenuByRole($conn, 10);
       // var_dump($page_name_by_roles);
        $all_menu=array();
    if(!empty($page_name_by_roles['data']) && $page_name_by_roles['status']===true )
    {
    foreach($page_name_by_roles['data'] as $key=>$value)
    {

       $pgname[]= $value['page_name'];
       $pgpath[]= $value['path'];
      if( $value['menu_parent_id']==0)
      {
        $parent_menu[]=   $value;
          $all_menu[]=array("id"=>$value['id'],"parent"=>"#", "text"=>$value['alias_name']);
      }
        else{
          $sub_menu[][$value['menu_parent_id']]= $value;
        $all_menu[]=array("id"=>$value['id'],"parent"=>$value['menu_parent_id'], "text"=>$value['alias_name']);
        }
    }
    }
        $htm="";
        $htm='    <ul>
          <li>Root node 1
            <ul>
              <li id="child_node_1">Child node 1</li>
              <li>Child node 2</li>
            </ul>
          </li>
          <li>Root node 2</li>
        </ul>';
       //  { "id": "ajson1", "parent": "#", "text": "Simple root node" },


    //  var_dump($page_name_by_roles);
    //// $page_name_by_roles;
     //var_dump($parent_menu);

       // var_dump($sub_menu); 
        if(is_array($parent_menu) && count($parent_menu)>0)
        {
           echo json_encode(array('status'=>true, 'parent_menu'=>$all_menu, 'child_menu'=>$sub_menu ));  
        }
        else{
              echo json_encode(array('status'=>false, 'parent_menu'=>$parent_menu, 'child_menu'=>$sub_menu ));  
        }

    }

    if($reason == "fetch_pages"){

    }
    ?>

And the controller is 

<?php

function modal_fill_access_content($conn){
    $query = "select pk_page_id, alias_name, menu_parent_id, parent_link_id from list_page_value where menu_parent_id = '0'";
    $stmt = $conn->prepare($query);
    $stmt->execute();

    $res = $stmt->fetchAll();

    return $res;
}

function searchChildren($conn, $child){

    $res = [];
    $query = "select pk_page_id, alias_name from list_page_value where pk_page_id IN (".$child.")";
    $stmt = $conn->prepare($query);
    $stmt->execute();

    $res = $stmt->fetchAll();

    return $res;
}

function insertRole($conn, $staff, $cb){
    ini_set('display_startup_errors', 1);
    ini_set('display_errors', 1);
    error_reporting(-1);
    try{
        $conn->beginTransaction();
        $query = "update tbl_access_mgmt set grant_access = '0' where fk_role_id = '$staff'";
        $stmt = $conn->prepare($query);

        if(!$stmt->execute()){
            throw new Exception("0");
        }
        $fk_user_id = 0;

        $query = "INSERT INTO `tbl_access_mgmt`(`pk_access_id`, `fk_page_id`, `fk_role_id`, `grant_access`, `fk_user_id`, `timestamp`) VALUES";

        for($i=0;$i<sizeof($cb); $i++){
            if($i == 0){
                $query .= "(NULL,'$cb[$i]', '$staff', '1', '$fk_user_id', CURRENT_TIMESTAMP)";
            }else{
                $query .= ",(NULL,'$cb[$i]', '$staff', '1', '$fk_user_id', CURRENT_TIMESTAMP)";
            }
        }

        $query .= "ON DUPLICATE KEY UPDATE grant_access = VALUES(grant_access), fk_user_id = VALUES(fk_user_id), timestamp = VALUES(timestamp)";

        $stmt = $conn->prepare($query);

        if(!$stmt->execute()){
            throw new Exception(implode(",", $stmt->showInfo()));
        }

        $conn->commit();
        $resp['status'] = true;
        $resp['msg'] = "Data successfully inserted.";
        return $resp;
    } catch (Exception $ex) {

        $conn->rollback();
        $resp['status'] = false;
        $resp['msg'] = "Can't complete the action. Error";
        return $resp;
    }
}
//
function searchRole($conn, $staff){

    try{
        $query = "select fk_page_id from tbl_access_mgmt where fk_role_id = '$staff' and grant_access = '1'";
        $stmt = $conn->prepare($query);

        if(!$stmt->execute()){
            throw new Exception("0");
        }
        $res = $stmt->fetchAll();

        $resp['status'] = true;
        $resp['msg'] = "Search Completed.";
        $resp['data'] = $res;

        return $resp;
    } catch (Exception $ex) {

        $resp['status'] = false;
        $resp['msg'] = "Can't complete the action. Error";
        return $resp;
    }
}




function getMenuByRole($conn, $role_id){

    try{
        $query = "SELECT DISTINCT a.path, a.pk_page_id as id, a.page_name, a.alias_name, a.menu_parent_id, a.parent_link_id FROM list_page_value as a inner join tbl_access_mgmt as b inner join tbl_role_types as c on a.pk_page_id = b.fk_page_id WHERE b.grant_access =1 and c.pk_role_id =:role_id order by a.page_name";
        $stmt = $conn->prepare($query);

        if(!$stmt->execute(array(':role_id'=>$role_id))){
            throw new Exception("0");
        }
       // $res = $stmt->fetchAll();
        $res =$stmt->fetchAll(PDO::FETCH_ASSOC);
        $resp['status'] = true;
        $resp['msg'] = "Menu listing Completed.";
        $resp['data'] = $res;
        return $resp;
    } catch (Exception $ex) {

        $resp['status'] = false;
        $resp['msg'] = "Can't complete the action. Error";
        return $resp;
    }

以下js文件已合并到其中:

  <script src="<?=ASSET_PATH?>assets/global/plugins/jquery.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/bootstrap/js/bootstrap.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/js.cookie.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jquery-slimscroll/jquery.slimscroll.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jquery.blockui.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/bootstrap-switch/js/bootstrap-switch.min.js" type="text/javascript"></script>
        <!-- END CORE PLUGINS -->
        <!-- BEGIN PAGE LEVEL PLUGINS -->
        <script src="<?=ASSET_PATH?>assets/global/plugins/moment.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/bootstrap-daterangepicker/daterangepicker.min.js" type="text/javascript"></script>

        <script src="<?=ASSET_PATH?>assets/global/plugins/morris/morris.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/morris/raphael-min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/counterup/jquery.waypoints.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/counterup/jquery.counterup.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/amcharts/amcharts/amcharts.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/amcharts/amcharts/serial.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/amcharts/amcharts/pie.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/amcharts/amcharts/radar.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/amcharts/amcharts/themes/light.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/amcharts/amcharts/themes/patterns.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/amcharts/amcharts/themes/chalk.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/amcharts/ammap/ammap.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/amcharts/ammap/maps/js/worldLow.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/amcharts/amstockcharts/amstock.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/fullcalendar/fullcalendar.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/horizontal-timeline/horizontal-timeline.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/flot/jquery.flot.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/flot/jquery.flot.resize.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/flot/jquery.flot.categories.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jquery-easypiechart/jquery.easypiechart.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jquery.sparkline.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jqvmap/jqvmap/jquery.vmap.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jqvmap/jqvmap/maps/jquery.vmap.russia.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jqvmap/jqvmap/maps/jquery.vmap.world.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jqvmap/jqvmap/maps/jquery.vmap.europe.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jqvmap/jqvmap/maps/jquery.vmap.germany.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jqvmap/jqvmap/maps/jquery.vmap.usa.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/jqvmap/jqvmap/data/jquery.vmap.sampledata.js" type="text/javascript"></script>
        <!-- END PAGE LEVEL PLUGINS -->
        <!-- BEGIN THEME GLOBAL SCRIPTS -->
        <script src="<?=ASSET_PATH?>assets/global/scripts/app.min.js" type="text/javascript"></script>
        <!-- END THEME GLOBAL SCRIPTS -->
        <!-- BEGIN PAGE LEVEL SCRIPTS-->
        <script src="<?=ASSET_PATH?>assets/global/plugins/jquery-idle-timeout/jquery.idletimeout.js" type="text/javascript"></script>
           <script src="<?=ASSET_PATH?>assets/global/plugins/jquery-idle-timeout/jquery.idletimer.js" type="text/javascript"></script>
            <!-- <script src="<?=ASSET_PATH?>assets/pages/scripts/ui-idletimeout.min.js" type="text/javascript"></script>  -->
        <!-- END PAGE LEVEL SCRIPTS -->
        <!-- BEGIN THEME LAYOUT SCRIPTS -->
        <script src="<?=ASSET_PATH?>assets/layouts/layout/scripts/layout.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/layouts/layout/scripts/demo.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/layouts/global/scripts/quick-sidebar.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/layouts/global/scripts/quick-nav.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/global/plugins/bootstrap-sweetalert/sweetalert.min.js" type="text/javascript"></script>
        <script src="<?=ASSET_PATH?>assets/pages/scripts/ui-sweetalert.min.js" type="text/javascript"></script>
<script src="<?=ASSET_PATH?>assets/global/plugins/jstree/dist/jstree.min.js"></script>
        <script src="<?=ASSET_PATH?>assets/pages/scripts/ui-tree.min.js" type="text/javascript"></script>
           <script src="<?=ASSET_PATH?>assets/staff_js/usermgmt/rolemgmt.js"></script>

我不是因为我出错了。认为它可能的JS冲突,但dosnt看起来像控制台日志没有显示任何错误。任何指针???

0 个答案:

没有答案