Для проекта я пытаюсь создать древовидный элемент управления с поддержкой ajax. Мои ajax-скрипты нормально работают на серверной части, но дерево не отображается должным образом. Когда я жестко кодирую ответ ajax в своем контейнере дерева, он отображается правильно:
Однако, когда я пытаюсь загрузить дерево через ajax, я получаю следующее:
Вот мой JS-код:
$(document).ready(function() {
function customMenu(node) {
var items = {
createItem : {
label : "Generate random number(s)",
action: function() {
console.log("Creating children...");
var selectedId = $("#treeview").jstree("get_selected").attr("id");
$.ajax({
type: "GET",
contentType: "application/json; charset=utf-8",
url: "libs/add.php",
data: "fact_id=" + selectedId,
dataType: "json",
success: function(data) {
console.log(data);
}
});
}
}
}
return items;
}
$("#treeview").jstree({
"plugins" : ["themes", "html_data", "ui", "crrm", "contextmenu"], contextmenu: {items: customMenu, select_node: true}
});
$.ajax({
url: "libs/display.php",
dataType: "json"
}).success(function(data) {
$("#treeview ul").append(data);
});
});
Кто-нибудь знает, в чем моя проблема? Любая помощь будет оценена по достоинству.
РЕДАКТИРОВАТЬ Приглядевшись поближе, я понимаю, что точная проблема заключается в том, что необходимые классы не добавляются к дочерним узлам при вызове через ajax. Тем не менее, я не уверен, почему.
ДРУГОЕ ИЗМЕНЕНИЕ display.php
теперь содержит следующий текст ответа:
[
{
"attr": {
"id": 1
},
"data": 649,
"state": "closed"
},
{
"attr": {
"id": 1
},
"data": 108,
"state": "closed"
},
{
"attr": {
"id": 1
},
"data": 86,
"state": "closed"
},
{
"attr": {
"id": 1
},
"data": 46,
"state": "closed"
}
]
Я иду в правильном направлении?