Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery将表单序列化为对象数组_Jquery_Asp.net Mvc 3_Serialization - Fatal编程技术网

使用jQuery将表单序列化为对象数组

使用jQuery将表单序列化为对象数组,jquery,asp.net-mvc-3,serialization,Jquery,Asp.net Mvc 3,Serialization,我试图将特定形式的所有输入序列化到对象数组中,以便将其传递给控制器操作,然后一次更新多行。我的问题是连载部分。。。不知怎么搞砸了 这里是我生成表单的地方: $.each(content, function (i, item) { var html = "<br />Choice ID<br /><input type='text' name='QuestionChoicesId' value='"

我试图将特定形式的所有输入序列化到对象数组中,以便将其传递给控制器操作,然后一次更新多行。我的问题是连载部分。。。不知怎么搞砸了

这里是我生成表单的地方:

$.each(content, function (i, item) {
                    var html = "<br />Choice ID<br /><input type='text' name='QuestionChoicesId' value='"
                        + item.QuestionChoicesId + "'><br />Choice Display Text<br /><input type='text' name='DisplayText'  value='"
                        + item.DisplayText + "'><br />Order of Display<br /><input type='text' name='OrderNumber' value='"
                        + item.OrderNumber
                        + "'>";
                    $(html).appendTo("#choices");
                });
以下是
console.log
输出:


它应该是一个对象数组,每个对象都有
QuestionChoicesId
DisplayText
OrderNumber

首先建议您包装每个组,这样就可以在包装器上构建一个循环

$.each(content, function (i, item) {
    var html = '<div class="control_group">';

    /* your exisiting string build code*/

    html += '</div>';
});

虽然它的结构可能是这样的,但我认为它发布的内容正如您所期望的那样。你看过它是如何在ajax调用中发布的吗?我做了同样的事情,它工作正常,绑定正确。

您可以使用:jquery.serializeToJSON- 它准备与表单ASP MVC一起使用


var obj=$(“form”).serializeToJSON()

控制器中的映射不正确。不停地叫喊
NullReferenceException
。因此,我跟踪了这个问题,发现表单的序列化不正确
$.each(content, function (i, item) {
    var html = '<div class="control_group">';

    /* your exisiting string build code*/

    html += '</div>';
});
var ajaxData = $('.control_group').map(function (idx,group) {
    var data = {};
    $(group).find(':input').each(function () {
        data[this.name] = this.value;
    });
    return data;
}).get();