【问题标题】:Serializing form to json correctly将表单正确序列化为 json
【发布时间】:2014-04-01 13:11:23
【问题描述】:

我将如何序列化这样的表单:

<form id="SomeForm">
    <input type="hidden" name="testId" value="123" />

    <input type="radio" name="question-1" value="1" />
    <input type="radio" name="question-1" value="2" />
    <input type="radio" name="question-1" value="3" />

    <input type="radio" name="question-2" value="1" />
    <input type="radio" name="question-2" value="2" />
    <input type="radio" name="question-2" value="3" />
    <input type="radio" name="question-2" value="4" />
</form>

像这样的 JSON 结构:

{ 
"testid" : 123,
"questions" : [   
    { "question" : [ {
        "id" : 1,
        "answer" : 2
    }]},
    { "question" : [ {
        "id" : 2,
        "answer" : 4
    }]}
]
} 

【问题讨论】:

  • 嗯,你有没有试过什么?哪个部分对你来说很难?顺便说一句,您的示例不是有效的 JSON。 [] 是一个数组,它应该没有键。
  • testidquestion 兄弟使用[..],就像它是一个数组,但有标签,就像它是一个对象。这不是有效的 JSON,它甚至不是有效的 JavaScript 文字。
  • 现在编辑..我尝试使用 jquery serializeArray,还查看了github.com/macek/jquery-serialize-object,但我似乎没有得到那个结果

标签: javascript jquery json serialization


【解决方案1】:
var form = $('#SomeForm').serializeArray();
var formObject = {};
$.each(form ,
    function(i, v) {
        formObject[v.name] = v.value;
    });

更多信息:-

http://css-tricks.com/snippets/jquery/serialize-form-to-json/

【讨论】:

  • 你忘了关闭报价
【解决方案2】:

试试这个:

$(document).ready(function(){
var frm = $("#SomeForm");
var data = JSON.stringify(frm.serializeArray());
console.log(data);

$("#test").click(function(){
    var frm = $("#SomeForm");
    var data = JSON.stringify(frm.serializeArray());
    alert(data);
});
});

工作小提琴:http://jsfiddle.net/robertrozas/as55D/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 2021-08-29
    • 2017-05-12
    • 1970-01-01
    • 2012-08-28
    • 2019-05-02
    • 1970-01-01
    相关资源
    最近更新 更多