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

时间:2015-08-04 06:36:07

标签: javascript c# jquery json asp.net-mvc

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

<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>

2 个答案:

答案 0 :(得分:0)

您无法使用$(this).serializeArray();,因为this指的是$('#btnsearch'),而不是表单。

使用$("#your_form_id).serializeArray();$("#your_form_id).serialize()

答案 1 :(得分:0)

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

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

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

使用选项

配置时,唯一正确处理该案例的序列化程序是this
{ associativeArrays: false }

(感谢raphaelm22为您的解决方案!)