Я пытаюсь динамически загружать узлы 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 работает с первым кодом, теперь со вторым. В документации указано The format remains the same as the above
, поэтому я не изменил ее.
Я также попытался вернуть те же данные, что и в примере:
[
{ "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, возвращаемые сервером.
Что не так?