我对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值。我尝试过使用回调但没有发生任何事情。
非常感谢任何帮助。
答案 0 :(得分:0)
代码中的以下部分已经负责将“id”查询字符串参数附加到ajax网址。该函数返回一个具有键/值对的对象,该对象将用于要请求的URL的查询字符串参数。
"data" : function(n) { return { id : n.attr ? n.attr("id") : 0 }; }
我不确定nodeRef变量的目的是什么。是找到根节点吗?如果是这样,你可以不使用不同的查询字符串参数吗?
使用fiddler确认jsTree构建的url是你期望的。也许它正在创建一个带有两个id查询字符串参数的url,它总是使用你的nodeRef变量提供的那个?