ztree 后台异步加载_zTree异步加载时,点击父节点没有向后台取数据

本文主要探讨了zTree中后台异步加载数据的问题。当点击父节点时,预期应该向后台请求子节点数据,但实际并未发生。在js代码中,配置了异步加载设置,并定义了相关回调函数,但在点击父节点时,没有正确触发后台数据加载。在后台代码中,`LoadMenuServlet`接收并处理请求,但未能在点击父节点时获取到子菜单数据。目前问题在于父节点被点击时,没有触发正确的异步请求。寻求解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js代码:

var curMenu = null, zTree_Menu = null;

var setting = {

async:{

autoParam:["menuid"],//异步加载时自动提交父节点参数

contentType:"application/json",//提交参数的数据类型

enable:true,//是否开启异步加载模式

type:"post",//提交方式

url:"LoadServlet",//服务端加载类

},

view: {

showLine: true,

selectedMulti: false,

dblClickExpand: false

},

data: {

simpleData: {

enable: true,

idKey:"menuid",

pIdKey:"parentid"

}

},

callback:{

asyncSuccess: zTreeOnAsyncSuccess,//异步加载成功的fun

asyncError: zTreeOnAsyncError, //加载错误的fun

beforeClick:beforeClick //捕获单击节点之前的事件回调函数

}

};

function zTreeOnAsyncError(event, treeId, treeNode){ alert("异步加载失败!"); }

function zTreeOnAsyncSuccess(event, treeId, treeNode, msg){ }

function beforeClick(treeId, node) {

if (node.isParent) {

if (node.level === 0) {

var pNode = curMenu;

while (pNode && pNode.level !==0) {

pNode = pNode.getParentNode();

alert(pNode);

}

if (pNode !== node) {

var a = $("#" + pNode.tId + "_a");

a.removeClass("cur");

zTree_Menu.expandNode(pNode, false);

}

a = $("#" + node.tId + "_a");

a.addClass("cur");

var isOpen = false;

for (var i=0,l=node.children.length; i

if(node.children[i].open) {

isOpen = true;

break;

}

}

if (isOpen) {

zTree_Menu.expandNode(node, true);

curMenu = node;

} else {

zTree_Menu.expandNode(node.children[0].isParent?node.children[0]:node, true);

curMenu = node.children[0];

}

} else {

zTree_Menu.expandNode(node);

}

}

return !node.isParent;

}

$(document).ready(function(){

$.fn.zTree.init($("#treeDemo"), setting);

zTree_Menu = $.fn.zTree.getZTreeObj("treeDemo");

});

后台代码(LoadMenuDaoImpl):

conn=BaseDao.getConn();

String sql="select * from tbl_menu where parentid=?";

ps=conn.prepareStatement(sql);

ps.setString(1, menuid);

rs=ps.executeQuery();

menu.append("[");

while(rs.next()){

menu.append("{menuid:'"+rs.getString("menuid")+"',parentid:'"+rs.getString("parentid")+"',name:'"+rs.getString("menuname")+"',isParent:true},");

}

menu.append("]");

LoadMenuServlet代码:

response.setContentType("text/html;charset=utf-8");

PrintWriter out = response.getWriter();

String menuid=request.getParameter("menuid");

System.out.println(menuid);

if(menuid==null||menuid.equals("")){

menuid="0";

}

LoadMenuDao lmd=new LoadMenuDaoImpl();

String menus=lmd.loadMenu(menuid);

out.print(menus);

out.flush();

out.close();

显示结果:

e079ae439c6765e7547a239f7fa1c745.png

目前的问题是,菜单的根目录已经加载上来,但是,当我点击父节点的时候,如:数据展示篇,它并没有再次向后台读取数据!没有实现异步!

求解决!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值