Jquery 使用ASP.NET MVC5中的Ajax将Fancytree SelectedNodes传递给控制器
我试图在ASP.NET MVC5项目中使用FancyTree插件,允许用户在树视图中选择项目,然后将所选对象的列表传递回控制器进行处理 我有一个显示我的数据方面的工作树视图,这一点是好的。我正在显示带有复选框的树视图。我的问题是,尝试使用Ajax将选定节点列表从树状视图传递回控制器时 这是初始化treeview的初始jqueryJquery 使用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
$(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();
});