2011-01-11 69 views
2

我对JavaScript编码相当陌生,特别是使用jQuery。我试图使用jsree试图通过JSON填充它。现在我相信我的问题已经在相关问题上得到了回答,但我似乎无法找到我正在做的具体答案。我也提到了jsTree文档,但我仍然无法弄清楚。从JSON中加载jsTree儿童

下面

是我想出来

buildTree : function(name, url, nodeRef) { 

    $("#"+name).jstree({ 
     "json_data" : { 
    "ajax" : { 
    "url" : url + nodeRef, 
    "data" : function(n) { 
     return { id : n.attr ? n.attr("id") : 0 }; 
    } 
    } 
    }, 

    "plugins" : [ "themes", "json_data" ] 
    }); 
    } 

的代码,这是基本的代码jsTree文档JSON的副本。这里发生了什么是我能够填充它的内容树的根文件夹。以下是我收到的JSON响应。

[ 
{ 
"attr":{"id":"a3e6a1f0-ec50-4215-a6df-2065eb09115e","rel":"file"}, 
"data":"File 1","state":"" 
}, 
{ 
"attr":{"id":"b38e4a72-875b-4d69-95d3-5437f7e65575","rel":"folder"}, 
"data":"Folder 1","state":"closed" 
} 
] 

但是,当我单击该文件夹的节点时,它正在由相同的JSON请求填充,具有相同的值。

我知道罪魁祸首是

"url" : url + nodeRef, 

,但我失去了我如何去传递我从响应获取ID,替换初始nodeRef值。我尝试过使用回调,但没有发生任何事情。

任何帮助,非常感谢。

回答

0

您的代码中的以下部分已经负责将“id”querystring参数附加到ajax url。该函数返回一个包含键/值对的对象,该对将用于要请求的URL的查询字符串参数。

"data" : function(n) {  return { id : n.attr ? n.attr("id") : 0 };  } 

我不确定nodeRef变量在代码中的用途是什么。它是找到根节点吗?如果是这样,你可以不使用不同的查询字符串参数吗?

使用小提琴来确认由jsTree构建的URL是你期望的。也许它目前正在创建一个带有两个id查询字符串参数的url,并且它始终使用由您的nodeRef变量提供的一个?