Передать данные необычного дерева как данные 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));
Другие вопросы по тегам