不明白,为什么我动态加载树节点就是不可以呢?

[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有报什么错吗?