2

我对 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 值。我尝试使用回调,但没有任何反应。

很感谢任何形式的帮助。

4

1 回答 1

0

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

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

我不确定 nodeRef 变量在您的代码中的用途。是找根节点吗?如果是这样,您不能为此使用不同的查询字符串参数吗?

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

于 2011-01-19T20:24:24.990 回答