7

我想将数据从花式树传递到通用处理程序,以便我可以保存它以供将来使用。

如果我使用此代码:

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中没有内置函数吗?

4

1 回答 1

11

好吧,我对 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));
于 2014-05-29T23:17:31.600 回答