2013-04-09 3 views
2

상위 노드 (카테고리)를 클릭하면 하위 노드 (내 경우 하위 카테고리)를 얻으려고합니다. 하지만 내 경우에는 아약스 요청이 일어나지 않는 것을 볼 수 있습니다. 이 웹 사이트의 솔루션 (http://www.miketyka.com/2012/10/lazy-loading-with-jstree-and-ajax/)을 사용했습니다.jstree에서 ajax 요청이 일어나지 않습니다.

/** 
    * 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> 

내가 얻으려고 노력하고있는 데이터 아래에있다 - 여기 아래에있는 내 jstree 코드입니다 (내가 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); 

부모 노드를 처음으로로드 할 때 모든 자식 노드는 사용자가 부모 노드를 클릭하여로드해야합니다.

내가보다는 요청이 발생하고 난 로딩 GIF를 볼 수 있습니다하지만 난이 오류를 "처리되지 않는 오류 : NotFoundError : DOM 예외 8"GET "json_data"이 아닌 "html_data"를 사용하는 경우 내가 "json_data"사용하는 경우지만, 그러면 아무 일도 일어나지 않고, 방화범에게 아약스 요청도 없습니다.

내가 뭘 잘못하고 있는지 이해할 수 없다. 어떤 해결책을 주시겠습니까? { "아약스":

+0

int 방화범 검을 볼 수 있습니까? AJAX 요청이 전송 되었습니까? 웹 서버가 그것을 수신합니까? 코드를 단순화하십시오. 아약스의 URL 만 사용하십시오. "load_open"이 무엇인지는 확실하지 않습니다. 전에는 사용하지 마십시오. – Radek

+0

@Radek --- 아무 아약스 요청도 전송되지 않습니다. 문제는 어디에서 오류를 찾을 수 있는지 이해할 수 없습니다 ... – rafi

+0

@Radek --- 클릭하여 하위 노드를로드하려고합니다. ajax를 사용하여 부모 노드 이름을 동적으로 지정합니다. – rafi

답변

2

, 나는 F를 ound 문제, 잘못하고 있었어. 난 그냥 잘못된 형식으로 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; 
      } 
     } 

below- 주어집니다 그리고 json_data보다는 html_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 
          }; 
        } 
       } 
      } 

나를 도와 주신 모든 분들께 감사드립니다. :-)

1

"json_data"를 변경 시도 { "URL": { "아약스"기능 (노드) {

"json_data"

에 : { 캐시 : 거짓, "URL"기능 (노드) {노력 사일 후

+0

아직 작동하지 않습니다. – rafi

+2

jsfiddle.net에서 데모를 시도해보세요. 사람들이 더 잘 도와 줄 수 있습니다. – Nathan

+0

그것은 매우 어렵습니다 .... :-(( – rafi

관련 문제