Передать данные необычного дерева как данные JSON
Я хочу передать данные из необычного дерева в общий обработчик, чтобы я мог сохранить его для будущего использования.
Если я использую этот код:
function SaveTree() {
var tree = $('#TopTree').fancytree("getTree");
$.ajax({
cache: false,
url: "SaveTree.ashx",
data: { 'treeData': tree },
contentType: "application/json; charset=utf-8"
});
}
Затем я получаю следующую ошибку из jquery.js:
JavaScript runtime error: Argument not optional
Я также попробовал:
var tree = $('#TopTree').fancytree("getTree").rootNode.children;
Это дает ту же ошибку. Я понимаю, это потому, что "дерево" не является JSON. Как я могу преобразовать данные в объект JSON?
РЕДАКТИРОВАТЬ:
Если я использую этот код:
function SaveTree() {
var data = [];
var tree = $('#TopTree').fancytree("getTree").rootNode.children;
for (var i = 0; i < tree.length; i++) {
data.push(tree[i].title)
}
data = JSON.parse(JSON.stringify(data))
$.ajax({
cache: false,
url: "SaveTree.ashx",
data: { 'treeData': data },
contentType: "application/json; charset=utf-8"
});
}
Я могу заставить его выполнить то, что мне нужно, но разве в fancytree нет встроенной функции для этого?
1 ответ
Решение
Хорошо, я немного знаю о FancyTree; Тем не менее, я провел небольшое исследование и нашел эту страницу http://wwwendt.de/tech/fancytree/demo/sample-api.html.
Попробуйте параметр tree.ToDict(), чтобы увидеть, если это то, что вы ищете.
Это исходный код.
// Convert the whole tree into an dictionary
var tree = $("#tree").fancytree("getTree");
var d = tree.toDict(true);
alert(JSON.stringify(d));