2

我试图在单击父节点(类别)时获取子节点(在我的情况下为子类别)。但我可以看到在我的情况下没有发生 ajax 请求。我已经使用了这个网站上的解决方案 - ( http://www.miketyka.com/2012/10/lazy-loading-with-jstree-and-ajax/ )。这是我下面的jstree代码-

/**
  * menu tree generation
  */
 $("#menu_tree")
.bind("open_node.jstree", function (e, data) { // this binding will collapse all nodes whenever user expands any single node
    data.rslt.obj.siblings().filter(".jstree-open").each(function () {
    data.inst.close_node(this);
    });
 })
 .jstree({
    "json_data": {
        "ajax": {
            "url": base_url + "draw/get_child"
        }
     },
     "types": { // this will let user to expand or collapse node by clicking on the node title
       "types": {
         "default": {
            "select_node": function (e) {
                this.toggle_node(e);
                return false;
            }
         }
       }
     },
    "core": {
    "html_titles": true,
    "load_open": true
 },
   "plugins": ["themes", "json_data", "html_data", "types", "ui"],
   "themes": {
   "theme": "apple",
   "dots": true,
   "icons": true
  }
});

html部分如下 -

<div class="" id="menu_tree" style="width: 500px;z-index: 1; float: right;position: relative;">
    <ul class="" style="position: absolute;top: 0px;left: 0px;">
    <?php
      if (!empty($parent_categories)) {
          foreach ($parent_categories as $parent_categories) {
    ?>
        <li id="cat<?php echo $parent_categories->objcat_id; ?>">
            <a href="#" class=""><?php echo $parent_categories->category_name; ?></a>
        </li>
    <?php
          }
      }
    ?>
    </ul>
</div>

我试图获取的数据如下 - (我正在使用codeigniter)

$this->load->model('object_category_model');
$result = array();
$sub_category = $this->object_category_model->get_subcategories_by_category_id($this->input->post('parent_id'));
echo json_encode($sub_category);

我只是第一次加载父节点,所有子节点都应该通过用户单击父节点来加载。

如果我使用“html_data”而不是“json_data”,那么会发生一个请求,我可以看到一个加载 gif,但是我得到这个错误“Uncaught Error: NotFoundError: DOM Exception 8”,但是如果我使用“json_data”那么什么都不会发生,萤火虫中没有ajax请求。

我不明白我在做什么错...有什么解决办法吗?

4

2 回答 2

2

经过4天的尝试,我发现了问题,我做错了。我只是从 php 部分返回格式错误的数据。现在我已经修复了格式并且运行良好,我也忘了使用“jstree-closed”类。正确的格式(我现在使用的格式)如下 -

      $sub_category = $this->object_category_model->get_subcategories_by_category_id($_GET['id']);

      if ($sub_category != FALSE) {
           foreach ($sub_category as $sub_category) {

                $result = '<li class="jstree-closed cat" id="' . $sub_category->objcat_id . '"><a href="#">' . $sub_category->category_name . '</a></li>';

                echo $result;
           }
      }

而且我使用的是 html_data 而不是 json_data。

"html_data" : { //generating child nodes of selected parent node dynamically using ajax
                "ajax" : {
                     "url" : base_url + "draw/get_child",
                     "data" : function (n) {
                          return {
                               id : n.attr ? n.attr("id") : 0
                          };
                     }
                }
           }

感谢大家试图帮助我。:-)

于 2013-04-16T04:55:04.907 回答
1

尝试改变

“json_data”:{“ajax”:{“url”:函数(节点){

“json_data”:{“ajax”:{ 缓存:假, “url”:函数(节点){

于 2013-04-09T10:12:16.633 回答