如何将jQuery.serialize()数据转换为JSON对象?

当表单包含多个输入数组字段时,是否有更好的解决方案来转换已被jQuery函数serialize()序列化的表单数据。 我希望能够将表单数据转换为JSON对象以重新创建其他一些信息丰富的表格。 所以告诉我一个更好的方法来获取序列化字符串转换为JSON对象。

<form id='sampleform'>
    <input name='MyName' type='text' /> // Raf

    <!--array input fields below-->
    <input name='friendname[]' type='text' /> // Bily
    <input name='fiendemail[]' type='text' /> // bily@someemail.com

    <!--duplicated fields below to add more friends -->
    <input name='friendname[]' type='text' /> // Andy
    <input name='fiendemail[]' type='text' /> // Andy@somwhere.com

    <input name='friendname[]' type='text' /> // Adam
    <input name='fiendemail[]' type='text' /> // Adam@herenthere.com
</form>

用于获取数据的jquery方法

var MyForm = $("#sampleform").serialize();
/** result : MyName=Raf&friendname[]=Billy&fiendemail[]=bily@someemail.com&friendname[]=Andy&fiendemail[]=Andy@somwhere.com&friendname[]=Adam&fiendemail[]=Adam@herenthere.com
*/

如何将这些数据放入JSON对象? 它应该具有以下示例来自上述表单的示例JSON数据。

{
    "MyName":"raf",
    "friendname":[
        {"0":"Bily"},
        {"1":"Andy"},
        {"2":"Adam"}
    ],
    "friendemail":[
        {"0":"bily@someemail.com"},
        {"1":"Andy@somwhere.com"},
        {"2":"Adam@herenthere.com"}
    ]
}

var formdata = $("#myform").serializeArray();
var data = {};
$(formdata ).each(function(index, obj){
    data[obj.name] = obj.value;
});

简单而快速;)


我最近有这个确切的问题。 最初,我们使用jQuery的serializeArray()方法,但不包括被禁用的表单元素。 我们经常会禁用与页面上其他来源“同步”的表单元素,但我们仍然需要将数据包含在序列化对象中。 所以serializeArray()就出来了。 我们使用:input选择器来获取给定容器中的所有输入元素(包括enabled和disabled),然后使用$.map()来创建我们的对象。

var inputs = $("#container :input");
var obj = $.map(inputs, function(n, i)
{
    var o = {};
    o[n.name] = $(n).val();
    return o;
});
console.log(obj);

请注意,为了达到这个目的,每个输入都需要一个name属性,该name属性将是结果对象的属性名称。

这实际上与我们使用的稍有不同。 我们需要创建一个结构为.NET IDictionary的对象,所以我们使用了这个:(我在这里提供它以防万一它有用)

var obj = $.map(inputs, function(n, i)
{
    return { Key: n.name, Value: $(n).val() };
});
console.log(obj);

我喜欢这两种解决方案,因为它们是$.map()函数的简单用法,并且您可以完全控制选择器(所以,最终包含在最终对象中的元素)。 另外,不需要额外的插件。 普通的旧jQuery。


使用jQuery.serializeJSON插件。 它使用与您在Rails params对象中找到的格式相同的格式来转换表单,这是非常标准且经过良好测试的。

链接地址: http://www.djcxy.com/p/8073.html

上一篇: How to convert jQuery.serialize() data to JSON object?

下一篇: parsing JSON array gives error