从JSON加载jsTree Children

时间:2011-01-11 07:07:12

标签: jquery jstree

我对JavaScript编码很新,特别是在使用jQuery时。我正在尝试使用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" ]
  });
    }

这基本上是JSON的jsTree文档中的代码副本。这里发生的是我能够填充其内容树的根文件夹。以下是我收到的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值。我尝试过使用回调但没有发生任何事情。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

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

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

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

使用fiddler确认jsTree构建的url是你期望的。也许它正在创建一个带有两个id查询字符串参数的url,它总是使用你的nodeRef变量提供的那个?