请求后台,动态参数设置
ztree吧
全部回复
仅看楼主
level 5
wangwm123456 楼主
我有两棵树,用一个setting,想动态设置一下参数,zTreeBeforeAsync这个方法进不去,不知道为什么,看了看api ,写了下面的代码,指点一下吧,谢谢啦。
部分主要代码如下:
var editYear=2015;
var capitalType=2;
var lru;
var setting = {
async: {
contentType : "application/json",
enable : true,
dataType : "text",
type : "post",
url : lru,
dataFilter: null
},
callback: {
beforeAsync: zTreeBeforeAsync,
onAsyncSuccess: zTreeOnAsyncSuccess,
beforeDrag: beforeDrag,
beforeEditName: beforeEditName,
beforeRemove: beforeRemove,
beforeRename: beforeRename,
onRemove: onRemove,
onRename: onRename
} };
// 异步加载之前回调函数,进行动态参数的设置
function zTreeBeforeAsync(treeId, treeNode) {//进不来!!!
alert();
return true;
};
function zTreeOnAsyncSuccess(event, treeId, treeNode, msg) {//进不来!!
alert(treeId)
editYear=$("#editeYear").val();
capitalType=$("#capitalType").val();
alert(editYear)
if(treeId='centerCaptType')
lru=APP_PATH + "/capitalTypeAction.do?method=getCaptialTypeTree&editeYear="+editYear+"¢erFlag=0&capitalType="+capitalType;
else
lru=APP_PATH + "/capitalTypeAction.do?method=getCaptialTypeTree&editeYear="+editYear+"¢erFlag=1&capitalType="+capitalType;
};

2012年02月21日 04点02分 1
level 11
你是如何 初始化的? 初始化时是否有数据传入? 如果有,把数据也贴出来看看
2012年02月21日 07点02分 2
level 5
wangwm123456 楼主
// 异步加载之前回调函数,进行动态参数的设置
function zTreeBeforeAsync(treeId, treeNode) {
editeYear=$("#editeYear").val();
capitalType=$("#capitalType").val();
centerFlag=treeId;
alert("editeYear=="+editeYear+"capitalType=="+capitalType+"centerFlag=="+centerFlag)
if($("
#editeYear").val()=='' || $("#
capitalType").val()==''){
return false;
}else{
return true;
}
这个方法能进来了,我修改了一下,目的是
对var editeYear;
var capitalType;
var centerFlag;
这三个全局变量进行设值,然后利用下面代码传到后台,进行相应数据的查询操作
sync: {
contentType : "application/json",
enable : true,
dataType : "text",
type : "post",
url : APP_PATH + "/capitalTypeAction.do?method=getCaptialTypeTree&editeYear="+editeYear+"¢erFlag="+centerFlag+"&capitalType="+capitalType,
dataFilter: null
},
现在的情况是,后台action接不到值,为undifyied,但是alert("editeYear=="+editeYear+"capitalType=="+capitalType+"centerFlag=="+centerFlag)这行代码能把相应的值alert出来,如果我把三个全局变量设置初始值,则传到后台一直是初始值,也就是说zTreeBeforeAsync这个方法执行了,但没起到作用!

2012年02月21日 07点02分 3
level 11
1、本人对 .net 不太了解,但你既然设置了 contentType: "application/json" 为何又要用 form 的方式传递参数? 不知道是否是这个影响
2、请你用 chrome 开发人员调试工具(F12)监控网络 network;看看传递的参数是否正确
如果正确,后台还得不到,那么可能是上一个问题的原因; 如果传递的参数就有问题,那么你要跟踪一下,是先触发的异步加载还是先赋值的。。也可能是其他逻辑问题。。。这个需要你自己多调试一下。
2012年02月21日 08点02分 4
level 5
wangwm123456 楼主
我用开发人员工具监控了一下,问题大致是这样,代码先执行初始化变量,然后调用方法,也就是先执行var setting{};我设完值后不进行再次初始化setting,所以传到后台的值不不变或传不过去,不知道我的理解对不对,还没有想到解决办法,如何在调用设置参数方法zTreeBeforeAsync后再初始化var setting{}。
2012年02月21日 09点02分 5
level 5
wangwm123456 楼主
弄好了,把变量写到$(document).ready里就ok了,[汗]
Thank you for your help!
2012年02月21日 10点02分 6
你好 我也遇到了此问题,但不明白你是如何解决的。麻烦贴下完整的代码,多谢!
2012年06月20日 07点06分
level 11
:)
2012年02月21日 10点02分 7
level 5
wangwm123456 楼主
你好!再问一下,如果我这样初始化
$.fn.zTree.init($("#subCentrCaptType"),settingSub);
$.fn.zTree.init($("#centerCaptType"),settingCenter);
是不是必须写两个setting,因为我要在请求路径中传不一样的参数过去,这样到后台用传过来的标志判断到不同的表查询出各自树的数据
2012年02月22日 01点02分 8
level 11
你也可以初始化第一个之后,修改 setting 然后用于第二个,看你怎么方便了。
2012年02月22日 02点02分 9
level 5
wangwm123456 楼主
如何初始化一个树之后,对其setting进行修改,然后用于第二棵树呢?麻烦你了。。谢谢。
2012年02月22日 06点02分 10
level 11
$.fn.zTree.init($("#subCentrCaptType"),settingSub);
settingSub.edit.enable = true; //举个例子
$.fn.zTree.init($("#centerCaptType"), settingSub);
这样不就可以了; 如果你仅仅是因为不同的tree 的 异步加载url 参数不同,那么你完全可以使用同一个setting ,只需要使用 setting.async.url 的 function 功能,在 这个function 中可以根据 treeId 判断不同的 树,从而生成不同的 url
2012年02月22日 07点02分 11
level 5
wangwm123456 楼主
谢谢了,ok了,我这样弄的
$.fn.zTree.init($("#centerCaptType"),setting);
setting.async.otherParam= ["editeYear", editeYear, "centerFlag", "sub","capitalType",capitalType];
$.fn.zTree.init($("#subCentrCaptType"),setting);[傻笑]

2012年02月22日 08点02分 12
var zTree = $.fn.zTree.getZTreeObj("treeDemo"); zTree.setting.async.url=。。。 //拼参数或者 zTree.setting.async.otherParam=...
2016年07月28日 07点07分
level 11
很好!呵呵
2012年02月22日 13点02分 13
1