Jquery 使用ASP.NET MVC5中的Ajax将Fancytree SelectedNodes传递给控制器

Jquery 使用ASP.NET MVC5中的Ajax将Fancytree SelectedNodes传递给控制器,jquery,asp.net-mvc,fancytree,Jquery,Asp.net Mvc,Fancytree,我试图在ASP.NET MVC5项目中使用FancyTree插件,允许用户在树视图中选择项目,然后将所选对象的列表传递回控制器进行处理 我有一个显示我的数据方面的工作树视图,这一点是好的。我正在显示带有复选框的树视图。我的问题是,尝试使用Ajax将选定节点列表从树状视图传递回控制器时 这是初始化treeview的初始jquery $(function () { $("#SiteID").text('Site ID : ' + $("#Sites opti

我试图在ASP.NET MVC5项目中使用FancyTree插件,允许用户在树视图中选择项目,然后将所选对象的列表传递回控制器进行处理

我有一个显示我的数据方面的工作树视图,这一点是好的。我正在显示带有复选框的树视图。我的问题是,尝试使用Ajax将选定节点列表从树状视图传递回控制器时

这是初始化treeview的初始jquery

        $(function () {

            $("#SiteID").text('Site ID : ' + $("#Sites option:selected").val());

            $("#tree").fancytree({
                selectMode: 3,
                checkbox: true,
                source: {
                    url: "@Url.Action("GetOLTs", "MNT")",
                    data: { SiteID: $("#Sites option:selected").val() },
                    cache: false
                }
            });
        });
这是我用来尝试和提交选定节点列表的按钮事件:-

$("#submit-button").on('click', function () {
    var Nodes = $('#tree').fancytree('getTree').getSelectedNodes();

    $.ajax({
        url: '@Url.Action("SubmitData", "MNT")',
        method: 'POST',
        data: { TreeData: Nodes } 
    });
});
getSelectedNodes()似乎正在选择正确的节点(我可以在警报中看到nodes变量的值),并创建一个逗号分隔的列表,我正在将该列表分配给“节点”

单击该按钮时,出现以下错误:-

Uncaught RangeError: Maximum call stack size exceeded
我有点不知所措,不知道这告诉了我什么,以及如何将数据传递给控制器。感谢您的帮助。

方法

tree.getSelectedNodes()
返回
FancytreeNode
对象的数组。您需要将其转换为普通对象,以便
$.ajax
函数可以对其进行序列化

例如,迭代数组并使用
node.toDict()

var selNodes = $("#tree").fancytree("getTree").getSelectedNodes();
var selData = $.map(selNodes, function(n){
  return n.toDict();
});