【发布时间】:2017-08-21 09:58:55
【问题描述】:
我想将我在 jsTree 上所做的更改保存回数据库。我尝试了不同的方法,但无法开始工作。我在codeigniter工作。如果可以,请你帮助我。谢谢你。 这是我的代码, view.php:
<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;
}
请帮帮我!!!我试图弄清楚这几天。
【问题讨论】:
-
我想将我在 jsTree 上所做的更改保存回数据库 你的意思是你在 jstree 复选框上所做的选择/取消选择?
-
没有。创建、删除、重命名、编辑和拖放。
-
没有得到你!
-
在jsTree中可以创建重命名修改删除节点。当我删除一个节点时,它不会从数据库(服务器)中删除,当我刷新页面时,“已删除”节点仍然存在。
-
好的,您必须处理所有这些事件并使用
ajax()为每个操作更新数据库中的数据
标签: php json codeigniter jstree