如何在Jquery中将ASP.NET MVC表单序列化为JSON

问题描述 投票:0回答:2

我想使用 jQuery 将 ASP.NET MVC 表单序列化为 JSON,然后想反序列化一些值,例如 C# 后端输入字段的值,但我无法在 json 中序列化它。请帮我解决这个问题。

这是我的代码:

<input type="search" id="txtsearch">
<input type="button" id="btnsearch" />

<script type="text/javascript">
    $(function () {
        $('#btnsearch').click(function (e) {
            var searchname = $('#txtsearch').val();
           
            var form = $(this).serializeArray();

            DrawTable(form);
        });

        function DrawTable() {
            var props = [];
            props.push({ name: "FirstName", value: firstname });
            BindDataTable({ AllowPaging: true, ShowFilter: false, ShowEditLink: true, EmptyTableText: 'No Data Found', SortIndex: 0, SortDirection: "asc" },
                              "#tblCustomers",
                              "@Url.Action("GetAllCustomers", "Customer")",
                              props,
                              [{ name: "Id", cellClass: "alignCenter", Sortable: true, index: 0 }, { name: "FirstName" }, { name: "ABN" }, { name: "Phone" }, { name: "Email" }, { name: "Address1" }, { name: "City" }, { name: "Country" }],
                              [{ name: "Id", type: "anchor", title: 'customerTable', viewtitle: 'View', link: '@Url.Action("Edit", "Customer")', index: 0 }]);
        } 
       
        // DrawTable(data);
        //$('#myInputTextField').on('keyup', function () {
        //    oTable.search($(this).val()).draw();
        //});
    });

</script>
javascript c# jquery json asp.net-mvc
2个回答
5
投票

是的,这是一个非常古老的问题,有很多类似的问题和答案:

但是这是专门针对 ASP.NET MVC 提出的:我已经测试了大部分答案,当存在 ASP.NET MVC 表单编码为的列表类型的属性时,它们无法序列化以 ASP.NET MVC 工作方式编码的表单

   TheProperty[1].SubProperty=Value
   TheProperty[2].SubProperty=Value

使用选项配置时,唯一正确处理该情况的序列化器是this

{ associativeArrays: false }
(感谢 raphaelm22 的解决方案!)


0
投票
您不能使用

$(this).serializeArray();

,因为 
this
 指的是 
$('#btnsearch')
,它不是表格。

使用

$("#your_form_id).serializeArray();

$("#your_form_id).serialize()

© www.soinside.com 2019 - 2024. All rights reserved.