[color=red]后台获取的json数据:[/color]
[ {
"text" : "公司总部1",
"id" : "1",
"cls" : "folder"
}, {
"text" : "公司总部2",
"id" : "2",
"cls" : "folder"
}, {
"text" : "公司总部3",
"id" : "3",
"cls" : "folder"
}]
[code="js"]
var treeloader = new Ext.tree.TreeLoader({
url : "xxxxxxx.do"
});
var treeBranchsBowserRoot = new Ext.tree.AsyncTreeNode({
id : "0",
text : "动态树"
});
var treeBranchsBowser = new Ext.tree.TreePanel({
border : false,
frame : false,
autoScroll : true,
animate : true,
loader : treeloader,
rootVisible : true,
animate : true,
lines : true,
enableDD : true,
containerScroll : true
});
treeBranchsBowser.setRootNode(treeBranchsBowserRoot);
treeBranchsBowser.on("beforeload", function(node) {
treeBranchsBowser.loader.baseParams = {
id : node.id
};
});
[/code]
[color=red]以上是我的代码,我是在网上查资料,几乎都是这种写法,说可以异步加载树节点的,为什么我就是加载不了呢?
请使用Extjs的朋友指点一下。。这个问题困扰了好久了。。我的类库使用的是3.0的。[/color]
[color=red][size=large]根节点是可以加载的,下面的子节点就是不能再加载了。。[/size][/color]
{"text":"core","id":"src\/adapter\/core","cls":"folder"},
这个就是leaf :false ,
你可以访问你的EXTJSDOC下的
http://localhost/ext/ext-3.0.0/ext-3.0.0/examples/tree/two-trees.html
或者
http://www.extjs.com/deploy/dev/examples/tree/two-trees.html
然后用FIREBUG执行下面的代码,这里的代码大部份是你的,我只改了
url : "get-nodes.php" 和 id : "src", 其他的都没改,所以感觉你的这个EXTJS代码没问题,应该是JSON数据有问题
[code="js"]Ext.getBody().update();
var treeloader = new Ext.tree.TreeLoader({
url : "get-nodes.php"
});
var treeBranchsBowserRoot = new Ext.tree.AsyncTreeNode({
id : "src",
text : "动态树"
});
var treeBranchsBowser = new Ext.tree.TreePanel({
border : false,
frame : false,
autoScroll : true,
animate : true,
loader : treeloader,
rootVisible : true,
animate : true,
lines : true,
enableDD : true,
containerScroll : true
});
treeBranchsBowser.setRootNode(treeBranchsBowserRoot);
treeBranchsBowser.on("beforeload", function(node) {
treeBranchsBowser.loader.baseParams = {
id : node.id
};
});
treeBranchsBowser.render(Ext.getBody());[/code]
我执行了一下你的代码,是可以返回数据的
[code="js"]var treeloader = new Ext.tree.TreeLoader({
url : "get-nodes.php"
});
var treeBranchsBowserRoot = new Ext.tree.AsyncTreeNode({
id : "src",
text : "动态树"
});
var treeBranchsBowser = new Ext.tree.TreePanel({
border : false,
frame : false,
autoScroll : true,
animate : true,
loader : treeloader,
rootVisible : true,
animate : true,
lines : true,
enableDD : true,
containerScroll : true
});
treeBranchsBowser.setRootNode(treeBranchsBowserRoot);
treeBranchsBowser.on("beforeload", function(node) {
treeBranchsBowser.loader.baseParams = {
id : node.id
};
});
treeBranchsBowser.render(Ext.getBody());[/code]
首先确认一下你这个后台JAVA代码有执行这个XXXX。DO吗?
如果有执行,且确认了返回数据。
那我觉得是你返回的JSON数据格式不对,能你JSON数据,或JAVA代码贴出来看看吗?
你后台数据怎么没有 id : "0", 结点的数据?
把
[code="js"]var treeBranchsBowserRoot = new Ext.tree.AsyncTreeNode({
id : "0",
text : "动态树"
}); [/code]
改成
[code="js"]var treeBranchsBowserRoot = new Ext.tree.AsyncTreeNode({
id : "1",
text : "动态树"
}); [/code]
试试
你的ID是拼的来显示结点,那服务器有对应的把这拼出来的ID拆开来找子节点吗?
你DEBUG时,看传进来的ID是什么格式的?
treeNode.setId(branch.getBranchType() + "b_" + branch.getParentId()
+ "_" + branch.getId());
[code="js"][{"text":"jquery-bridge.js","id":"src\/adapter\/jquery-bridge.js","leaf":true,"cls":"file"},
{"text":"core","id":"src\/adapter\/core","cls":"folder"},
{"text":"prototype-bridge.js","id":"src\/adapter\/prototype-bridge.js","leaf":true,"cls":"file"},
{"text":"ext-base-dom-more.js","id":"src\/adapter\/ext-base-dom-more.js","leaf":true,"cls":"file"},
{"text":"yui-bridge.js","id":"src\/adapter\/yui-bridge.js","leaf":true,"cls":"file"}][/code]
把
"nodeType":"async",去 掉呢?
JAVASCRIPT有报什么错吗?