【问题标题】:Loading jsTree Children from JSON从 JSON 加载 jsTree Children
【发布时间】:2011-01-20 04:24:24
【问题描述】:

我对 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" ]
  });
    }

这基本上是 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 值。我已经尝试使用回调,但没有任何反应。

非常感谢任何帮助。

【问题讨论】:

    标签: jquery jstree


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-13
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      相关资源
      最近更新 更多