Struts2 + zTree 异步加载树疑难问题,请教为什么出现undefined
@zTree 你好,想跟你请教个问题:
Struts2 +Json + Hibernate + Spring + zTree 异步加载疑难问题,请教为什么出现undefined
最近用Struts2 + zTree v3.5 异步加载问题
第一次加载数据显示都很正常。数据库有字段isParent子段。为true的都会有子节点嘛。
传入,和返回json数据都是正确的
var setting = {
data: {
simpleData: {
enable: true,//后台返回的就是个ArrayList
idKey: "mid",
pIdKey: "pid",
rootPId: 0
}
},
async: {
enable: true,
url:"menuitemAction_showMenuitemsByPid.action",//点击树结构+时的加载。发现每次点击+加载。第一次不会调用这里代码
autoParam:["mid=pid"]
}
};
$(document).ready(function(){
$.post("menuitemAction_showMenuitemsByPid.action", { pid : 0 }, function(data){
zNodes = data.menuitemList;
//第一次加载初始化数据
zTreeObj = $.fn.zTree.init($("#menuTree"), setting, zNodes);
});
});
加载数据都需要带pid这个参数。第一次我加载数据库初始化数据,能够展现出树。
每次当我点击+加载二级树时。已经返回了正确的json数据。二级菜单也显现出来了。但是不知道为什么
每个子节点总是多出个undefined。
将异步加载的数据给onAsyncSuccess处理。将返回的数据添加到当前点击的节点下面。
callback: {
//beforeClick: beforeClick,
//beforeAsync: beforeAsync,
//onAsyncError: onAsyncError,
onAsyncSuccess: onAsyncSuccess
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我也遇到同样(一模一样)的问题,请问你是怎么解决的呢?
第一次的时候 判断在action里面判断一下就行了,没必要再次弄个ajax
$.post("menuitemAction_showMenuitemsByPid.action", { pid : 0 }, function(data){
zNodes = data.menuitemList;//第一次调用这里的action
zTreeObj = $.fn.zTree.init($("#menuTree"), setting, zNodes);
});
async: {
enable: true,
url:"menuitemAction_showMenuitemsByPid.action",//点击树结构+时的加载。发现每次点击+加载。第一次不会调用这里代码。第二次就开始调用这里的action
autoParam:["mid=pid"]
我测试过按照我上面的写法。的
确 url:"menuitemAction_showMenuitemsByPid.action这里第一次没有调用。从第二次开始调用。
但是如果上述的代码改成$(document).ready(function(){
treeObj = $.fn.zTree.init($("#menuTree"), setting);
}
这样就每次会调用url:"menuitemAction_showMenuitemsByPid.action
但是我第一次就需要传递参数。我不知道第一次进入该页面如何传参?所以我改
成$.post("menuitemAction_showMenuitemsByPid.action", { pid : 0 },传递了一个
参数。此时第一次树展现出来后 autoParam:["mid=pid"]这里就有值了。如果不改,第
一次进入页面pid根本没有值
url:"menuitemAction_showMenuitemsByPid.action",//点击树结构+时的加载。发现每次点击+加载。第一次不会调用这里代码
第一次 也要调用这个吧 我记得是的,你还在
$.post("menuitemAction_showMenuitemsByPid.action", { pid : 0 },
这个没用吧