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

标签 jquery asp.net-mvc-3 serialization

我正在尝试将特定形式的所有输入序列化为对象数组,以便我可以将其传递给我的 Controller 操作,然后一次更新多行。我的问题是序列化部分...它不知何故搞砸了。

这是我生成表单的地方:

$.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($('#choices :input').serializeArray());
        $.ajax({
            type: "POST",
            url: "/Question/UpdateQuestionchoices/",
            data: $('#choices :input').serialize()
        });

这是console.log输出:

output of serialize

它应该是一个对象数组,每个对象都有 QuestionChoicesIdDisplayTextOrderNumber

最佳答案

首先建议您包装每个组,以便可以在包装器上构建循环

$.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();

DEMO

关于jquery - 使用 jQuery 将表单序列化为对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19886404/

相关文章:

Jquery .css 从当前大小缩放图像

asp.net-mvc - 在空模型的情况下返回错误响应

asp.net-mvc-3 - Windows 7(或更高版本)上 Web 应用程序的自动安装程序

c - 固件中存储串口数据的数据结构

python - 在对象上 pickle lru_cached 函数

java - 调用 JavaPairRDD.max 时 Spark 中的任务不可序列化异常

javascript - 在 javascript 中使用正则表达式无效组错误

javascript - 打印不带标题和日期的数据表?

javascript - 使用 jQuery 在父级 <div> 中选择 <divs>

asp.net - Razor 向 HTML 添加新属性