我有下一个表格:
<form id="form">
<input type="checkbox" name="numbers" value="1">
<select name="ordering[numbers]">
<option value="ASC">Ascend</option>
<option value="DESC">Descend</option>
</select><br>
<input type="checkbox" name="added_date" value="1"> Call date
<select name="ordering[added_date]">
<option value="ASC">Ascend</option>
<option value="DESC">Descend</option>
</select>
</form>
基本上我需要在提交表单之前将所有数据保存到JSON对象,让我们称之为form_json 我正在使用jQuery.serializeArray()函数
var form_json = $("#form").serializeArray();
如果选中了两个复选框,我会得到下一个对象:
[
{"name": "numbers", "value": "1"},
{"name": "ordering[numbers]", "value": "ASC"},
{"name": "added_date","value":"1"},
{"name": "ordering[added_date]", "value": "ASC"}
]
这不是我的预期。 我想以某种方式获得下一个格式:
[
{"name": "numbers","value": "1"},
{"name": "added_date","value": "1"},
{"name": "ordering", "value": {
"numbers": "ASC",
"added_date": "ASC"}
}
]
这可能吗? 谢谢!
答案 0 :(得分:1)
我不确定.serializeArray()是否会创建该结构。你必须添加表格的其余部分,但这可能会让你更接近。
var ordering = {"name" : "ordering", "values" : {}};
ordering.values[$("select[name='ordering[numbers]']").prop('name')] = $("select[name='ordering[numbers]']").val();
ordering.values[$("select[name='ordering[added_date]']").prop('name')] = $("select[name='ordering[added_date]']").val();
console.log(ordering)