2017-03-28 1 views
1

jsTree에서 변경 한 내용을 데이터베이스에 저장하고 싶습니다. 나는 다른 방법을 시도했으나 작동하지 않습니다. 나는 codeigniter에서 일하고있다. 가능하면 도와주세요. 고맙습니다. 여기 내 코드는, view.php :jsTree의 변경 사항을 다시 데이터베이스에 저장하는 방법은 무엇입니까?

<button id="target" type="submit">Click here</button> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('#tree-container').on('changed.jstree', function (e, data) { 
      var i, j, r = []; 
      // var state = false; 
      for (i = 0, j = data.selected.length; i < j; i++) { 
       r.push(data.instance.get_node(data.selected[i]).id); 
      } 
      $('#txttuser').val(r.join(',')); 
     }).jstree({ 
      'plugins': ["checkbox", "dnd", "search", "contextmenu"], 
      'core': { 
       "check_callback" : true, 
       "multiple": true, 
       'data': { 
        "url": "getChildren", 
        "dataType": "json" 
       } 
      }, 
      'checkbox': { 
       three_state: false, 
       cascade: 'up' 
      }, 
      'plugins': ["dnd","contextmenu","search","wholerow"], 
     } 
     ); 
    }); 

    $("#target").click(function() { 
     var v =$('#tree-container').jstree(true).get_json();  
     var mytext = JSON.stringify(v);  
     alert(mytext); }); 
</script> 

<div class="row"> 
    <div class="container"> 
     <input type="hidden" name="node" id="node" value="" /> 
     <div class="form-group"> <div id="tree-container"></div> 
     </div> 
    </div> 
</div> 

controller.php :

function getChildren() { 

    $this->load->model('Category_model'); 

    $result = $this->Category_model->tree_all(); 

    $itemsByReference = array(); 
// Build array of item references: 
     foreach($result as $key => &$item) { 
     $itemsByReference[$item['category_id']] = &$item; 
// Children array: 
     $itemsByReference[$item['category_id']]['children'] = array(); 
// Empty data class (so that json_encode adds "data: {}") 
     $itemsByReference[$item['category_id']]['data'] = new StdClass(); 

    } 
// Set items as children of the relevant parent item. 
    foreach($result as $key => &$item) 
     if($item['parent_id'] &&  isset($itemsByReference[$item['parent_id']])) 
      $itemsByReference [$item['parent_id']]['children'][] = &$item; 


// Remove items that were added to parents elsewhere: 
    foreach($result as $key => &$item) { 
     if($item['parent_id'] && isset($itemsByReference[$item['parent_id']])) 
      unset($result[$key]); 



    } 

    foreach ($result as $row) { 
     $data[] = $row; 

    } 
// Encode: 
echo json_encode($data); 

    } 

model.php :

function tree_all() { 
$result = $this->db->query("SELECT category_id, category,category as text, parent_id FROM category ")->result_array(); 
foreach ($result as $row) { 
    $data[] = $row; 

} 
    return $data; 

} 

Pleeaaase의 heeelp의 MEEE! 나는 이것을 며칠 동안 알아 내려고 노력하고있다.

+0

** 나는이 선으로 ** 내가 다시 데이터베이스에 jsTree에 변경 한 내용을 저장하려면 jstree 체크 박스에서 선택/선택 해제 했습니까? –

+0

아니요. n 드롭을 작성, 제거, 이름 바꾸기, 편집 및 드래그합니다. –

+0

너를 못 만나요! –

답변

1

는 우선, 추가, 편집, JSTree와 업데이 트를 관리하는 jstree.js를 다운로드하고 다음 줄을 확인하려면 : 생성을 클릭하면 이것이 코드 블록 실행이다

"create" : { 

넣어 당신의 ajax 호출로 add/update 데이터베이스에 코드 로직을 작성하십시오.

마찬가지로 edit, delete을 관리 할 수 ​​있습니다. 참고

:edit, delete는 단지 create

아약스 구문 후 :

$.ajax({ 
    url : '<?php echo base_url().'/controllerfunction' ?>', 
    method : 'post', 
    data: { 
    key : value 
    }, 
    success: function(response) // response from controller function 
    { 
    // your code here 
    } 
}); 
+0

예. 나는 그것을 이해하지만 아약스 호출을 작성하는 방법을 모른다. :(함수를 찾았습니다. –

+0

업데이트 된 답변 확인 –