将序列化表单的数据转换为json对象

Nul*_*nce 31 asp.net-mvc jquery serialization json

我有一个如下的cshtml

@using (Html.BeginForm("Save", "Plans", FormMethod.Post, new { @class = "form-horizontal", id = "floorplan-form" }))
{
            @Html.TextBoxFor(m => m.FloorPlan.Name, new { placeholder = "Enter text", @class = "form-control" })

            @Html.DropDownListFor(m => m.FloorPlan.GroupId, new SelectList(Model.FloorPlanGroups, "Id", "Name"))             
}
Run Code Online (Sandbox Code Playgroud)

在我的javascript(在一个单独的javascript文件中),我正在尝试序列化此表单并将其转换为JSON对象.

var formData = $("#floorplan-form").serialize();
console.info(formData);
Run Code Online (Sandbox Code Playgroud)

打印出来

FloorPlan.Name=Test&FloorPlan.GroupId=15 
Run Code Online (Sandbox Code Playgroud)

var formData = $("#floorplan-form").serializeArray();
console.info(formData);
Run Code Online (Sandbox Code Playgroud)

给我:

屏幕截图

我试过这样做

var formData = JSON.parse($("#floorplan-form").serializeArray());
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

Uncaught SyntaxError: Unexpected token o 
Run Code Online (Sandbox Code Playgroud)

小智 39

改变你的陈述

var formData = JSON.parse($("#floorplan-form").serializeArray());
Run Code Online (Sandbox Code Playgroud)

var formData = JSON.stringify(jQuery('#frm').serializeArray()); // store json string
Run Code Online (Sandbox Code Playgroud)

要么

var formData = JSON.parse(JSON.stringify(jQuery('#frm').serializeArray())) // store json object
Run Code Online (Sandbox Code Playgroud)

  • 这些天Lol的孩子用他们喜欢的jQuery ... JSON`对象是Javascript的[内置对象]的一部分(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON).与jQuery无关. (8认同)

小智 17

使用下面的代码!

    var data = $("form").serialize().split("&");
    console.log(data);
    var obj={};
    for(var key in data)
    {
        console.log(data[key]);
        obj[data[key].split("=")[0]] = data[key].split("=")[1];
    }

    console.log(obj);
Run Code Online (Sandbox Code Playgroud)


Rif*_*een 6

function jQFormSerializeArrToJson(formSerializeArr){
 var jsonObj = {};
 jQuery.map( formSerializeArr, function( n, i ) {
     jsonObj[n.name] = n.value;
 });

 return jsonObj;
}
Run Code Online (Sandbox Code Playgroud)

使用此功能.这只适用于jquery.

var serializedArr = $("#floorplan-form").serializeArray();

var properJsonObj = jQFormSerializeArrToJson(serializedArr);
Run Code Online (Sandbox Code Playgroud)