我正在尝试在JTree节点展开时动态加载它们。我在 这个页面 的末尾找到了一些文档。
我发现一些解决方案通过循环逐个创建节点,例如 这个。我还没有尝试过,但是看着文档页面,我有一种感觉,就是jstree应该负责循环遍历这些节点。
我发现许多解决方案都使用 plugins: ["json_data"]
,但是 插件文档页面 并没有提到这个插件。那是一个旧插件吗?已经不再需要了吗?
我的当前实现使用以下代码一次性加载整个树:
$.ajax({
var pn = $('#project_number').val();
url : "bomtree?part=" + pn,
success : function(tree_content) {
var data = $.parseJSON(tree_content);
var config = {
'core' : {
'data' : data
}
};
$('#bom_tree').jstree(config);
}
});
我像这样修改了文档页面上的代码:
$(function() {
var pn = $('#project_number').val();
$('#tree').jstree({
'core' : {
'data' : {
'url' : function(node) {
return '/doc/test2';
},
'data' : function(node) {
return {
'part' : node.id === '#' ? pn : node.id
};
}
}
}
});
});
相同的JSON文本在第一段代码中能够正常工作,但现在在第二段代码中无法正常工作。文档说“格式与上述相同”,所以我没有更改它。
我也尝试返回与示例中相同的数据,这样:
[
{ "id" : "ajson1", "parent" : "#", "text" : "Simple root node" },
{ "id" : "ajson2", "parent" : "#", "text" : "Root node 2" },
{ "id" : "ajson3", "parent" : "ajson2", "text" : "Child 1" },
{ "id" : "ajson4", "parent" : "ajson2", "text" : "Child 2" },
]
但结果是相同的:jQuery在以下行抛出Sizzle.error错误:
Sizzle.error = function( msg ) {
throw new Error( "Syntax error, unrecognized expression: " + msg );
};
msg
的内容是服务器返回的JSON数据。
有什么问题吗?