最终效果图
环境:ztree v3.3
ztree 简单数据类型 支持ajax返回的json字符串 不需要重新设计json对象
后台数据是分层次存入redis缓存的 如下所示
前端js代码:
var setting = {
//ajax 加载数据 ztree可直接使用返回的json字符串
async: {
enable: true,
url:"<?php echo elgg_add_action_tokens_to_url(elgg_get_site_url().'action/ztree/getdata')?>",
autoParam:["id"],
//otherParam:{"lv"},
//dataFilter: filter
},
check: {
enable: true,
chkboxType: {"Y":"ps", "N":"ps"}
},
view: {
dblClickExpand: false
},
data: {
simpleData: {
enable: true
}
},
callback: {
beforeClick: beforeClick,
onCheck: onCheck
}
};
function beforeClick(treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj(treeId);
zTree.checkNode(treeNode, !treeNode.checked, null, true);
return false;
}
function onCheck(e, treeId, treeNode) {
var zTree = $.fn.zTree.getZTreeObj(treeId),
nodes = zTree.getCheckedNodes(true),
v = "";
//返回checkbox值
for (var i=0, l=nodes.length; i<l; i++) {
if(!nodes[i].isParent){
v += nodes[i].name + ",";//多值用,隔开
}
}
if (v.length > 0 ) v = v.substring(0, v.length-1);
var cityObj = $("#input_"+treeId);
cityObj.attr("value", v);
}
function showMenu(v) {
var cityObj = $("#input_"+v+"_a");
var cityOffset = $("#input_"+v+"_a").position();
$("#menuContent ul" ).hide();
$("#"+v).show();
$("#menuContent").css({left:cityOffset.left + "px", top:cityOffset.top + cityObj.outerHeight() + "px"}).slideDown("fast");
$("body").bind("mousedown", onBodyDown);
}
function hideMenu() {
$("#menuContent").fadeOut("fast");
$("body").unbind("mousedown", onBodyDown);
}
function onBodyDown(event) {
if (!(event.target.id == "menuBtn" || event.target.id == "citySel" || event.target.id == "menuContent" || $(event.target).parents("#menuContent").length>0)) {
hideMenu();
}
}
//过滤接受的json数据
function filter(treeId, parentNode, childNodes) {
if (!childNodes) return null;
//alert(childNodes[0].id);
return childNodes;
}
function ztree_init(v){
switch(v){
case 'edu_type_list':
var treeNodes=[{id:'A',pId:'0',name:'适用教育类型', isParent:true}];
break;
case 'curriculum_list' :
var treeNodes=[{id:'B',pId:'0',name:'课程标准', isParent:true}];
break;
case 'format_list' :
var treeNodes=[{id:'C',pId:'0',name:'资源格式', isParent:true}];
break;
case 'grade_list' :
var treeNodes=[{id:'D',pId:'0',name:'适用年龄段', isParent:true}];
break;
case 'learner_list' :
var treeNodes=[{id:'E',pId:'0',name:'适用学习者', isParent:true}];
break;
case 'textbook_list':
var treeNodes=[{id:'F',pId:'0',name:'教材信息', isParent:true}];
break;
case 'topic_list':
var treeNodes=[{id:'G',pId:'0',name:'所属专题', isParent:true}];
break;
case 'subject_list' :
var treeNodes=[{id:'H',pId:'0',name:'所属学科', isParent:true}];
break;
case 'type_list':
var treeNodes=[{id:'I',pId:'0',name:'资源类型', isParent:true}];
break;
}
//初始化ztree 以及弹窗
$.fn.zTree.init($("#"+v), setting, treeNodes);
showMenu(v)
}
后台返回json代码:
<?php
/**
*根据id 返回 资源分类
*/
$id=get_input('id');
//获取资源分类
$type=substr($id, 0,1);
switch ($type){
case 'A':
$key='typeselect:edu_type_list:'.$id;
break;
case 'B':
$key='typeselect:curriculum_list:'.$id;
break;
case 'C':
$key='typeselect:format_list:'.$id;
break;
case 'D':
$key='typeselect:grade_list:'.$id;
break;
case 'E':
$key='typeselect:learner_list:'.$id;
break;
case 'F':
$key='typeselect:textbook_list:'.$id;
break;
case 'G':
$key='typeselect:topic_list:'.$id;
break;
case 'H':
$key='typeselect:subject_list:'.$id;
break;
case 'I':
$key='typeselect:type_list:'.$id;
break;
}
//返回 json数据
$info=redis_get_cache_content($key);
echo $info;
exit();
- 大小: 20.9 KB
- 大小: 15.8 KB
分享到:
相关推荐
【标题】"ZTree+Struts2+ajax+json实现checkbox权限树"涉及的技术栈主要集中在前端的ZTree,后端的Struts2框架,以及数据交互中的Ajax和JSON。这个项目的核心目标是构建一个可复选的权限树形结构,用户通过勾选节点...
在SSH+ztree+ajax+json项目中,Ajax可能被用于异步地从服务器获取数据(例如JSON格式),然后动态地更新ZTree的节点,提供更流畅的用户体验。 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于...
3. **创建节点**:zTree的节点数据通常以JSON格式存储。例如: ```javascript var nodes = [ { id:1, pId:0, name:"父节点1"}, { id:11, pId:1, name:"子节点1-1"}, { id:12, pId:1, name:"子节点1-2"} ]; ``...
对于动态加载,你需要创建一个处理AJAX请求的控制器方法,该方法使用EF查询数据库,获取树形结构所需的数据,然后以JSON格式返回。 - **视图(View)**:视图是用户看到和交互的部分。在zTree的场景中,你需要创建一...
Bootstrap、ZTree 和 Table 是三个在 Web 开发中常用的组件,它们各自有着独特的作用,但也可以...在实际开发中,还可以根据需求进一步扩展,如集成 AJAX 动态加载数据、增加搜索过滤功能等,实现更复杂的业务逻辑。
【dt+ztree+ajax的DEMO】是一个整合了Datatables、ZTree和Ajax技术的示例项目,旨在实现用户在ZTree中进行交互时,通过Ajax异步加载数据到Datatables表格中的功能。这个DEMO展示了如何将这三者有效地结合,以提供一...
在本案例中,我们使用AJAX从服务器获取JSON格式的服务分类数据,并将其渲染到Ztree上。 ### 结合Ztree与AJAX 为了实现Ztree与AJAX的结合,首先需要配置Ztree的设置对象`setting`,然后通过AJAX请求获取数据并初始...
这个“ajax获取嵌套JSON,树形控件显示”的示例主要涉及如何通过Ajax获取嵌套的JSON数据,并将其适配到ZTree的格式,以便在页面上以树形结构展示。 首先,我们需要理解JSON(JavaScript Object Notation)是一种轻...
例如,使用JSON格式的固定数据初始化zTree可能如下: ```javascript var setting = { check: { enable: true, chkStyle: "checkbox", radioType: "all" // 或者 "level" for single selection }, data: { ...
这可能通过Ajax请求实现,如jQuery的`$.ajax()`或`$.getJSON()`。响应数据需要设置正确的MIME类型(如`application/json`),以确保浏览器能正确解析。 5. 前端处理:前端接收到JSON数据后,调用ZTree的初始化方法...
在这个“ajax+asp修改新增都在一个页上小小实例”中,我们主要探讨的是如何结合Ajax技术和ASP(Active Server Pages)来实现动态网页交互,让用户在同一个页面上完成数据的添加和修改,无需频繁地刷新页面,提升用户...
在创建 zTree 时,我们需要提供 JSON 数据,这些数据定义了各个节点的信息,包括父节点、子节点以及它们的层级关系。例如: ```json [ { "id": "1", "pId": "0", "name": "父节点1", "children": [ { "id": ...
前端负责页面渲染和ZTree的初始化,通过Ajax获取后端动态生成的树节点数据;后端则利用SpringMVC和Hibernate处理数据查询和转换,提供给前端展示。整个过程涉及到了前端UI、JavaScript交互、后端服务和数据库操作等...
ZTree需要的数据结构通常是一个嵌套的JSON数组,表示树的层级关系。 5. 视图(View)与模板(Template): 在Django中,视图函数负责处理HTTP请求并返回响应。对于ZTree,这个响应可能是一个包含树节点数据的JSON字符串...
在Java后端,我们需要创建一个处理AJAX请求的控制器,该控制器接收前端发送的请求,查询数据库获取树形结构的数据,然后以ZTree要求的JSON格式返回。例如,使用Spring MVC框架,我们可以这样做: ```java import ...
它支持多种数据源格式,如JSON、XML,提供了丰富的配置选项和事件机制,使得在Web应用中展示层级关系数据变得简单。ztree还支持节点的增删改查、拖拽操作、多选功能,广泛应用于目录结构展示、文件管理、权限控制等...
在提供的两个文件"struts+ztree+jquery动态生成树结构1.txt"和"struts+ztree+jquery动态生成树结构2.txt"中,很可能是分别展示了这两种方法的具体实现细节,包括Action的代码示例、前端的jQuery代码和ZTree的配置。...
ZTree支持JSON数据格式,方便与后端进行数据交互。 2. **层级结构:** ZTree的层级结构体现在节点之间的父子关系。父节点可以有多个子节点,子节点也可以是其他节点的父节点,形成多级嵌套。这种结构在表示组织...
【标题】"ztree+struts2+hibernate项目"是一个综合性的Web应用程序示例,它结合了多个核心技术,包括ztree、Struts2、Hibernate以及jQuery,展现了如何在实际开发中有效地整合这些工具。这个项目的核心在于利用ztree...
2. 准备数据:根据需求构造JSON数据,通常存储在服务器端,通过Ajax请求获取。 3. 初始化配置:设置zTree的配置项,如显示样式、节点操作行为等。 4. 创建节点:将JSON数据传递给zTree,通过$.fn.zTree.init()方法...