HTML表单分为几个部分。章节有他们的输入字段。当我以JSON格式发送表单数据时,就像下面给出的代码一样。控制器接收表格数据作为一维数组 有没有办法将表单数据作为二维数组发送?其中section-name将包含字段的名称/值对数组。
$('form').submit(function () {
alert('here');
$.ajax({
url: $(this).attr('action'),
type: 'POST',
data: JSON.stringify($(this).serializeArray()),
contentType: 'application/json',
success: function (data) {
alert('data')
},
error: function (jqXHR, textStatus, errorThrown) {
alert('An error has occured!! :-(')
}
});
return false;
})
});
答案 0 :(得分:1)
有,但你不能用.serializeArray()
来做;你需要使用jQuery遍历DOM,将数据组合成一个格式化的数组格式,然后将其作为data
参数的值传递给.ajax()
。考虑以下设计的例子:
<form>
<div class="section">
<span class="section_title">Section 1</span>
<input name="this" type="text" value="this" />
<input name="that" type="text" value="is" />
</div>
<div class="section">
<span class="section_title">Section 2</span>
<input name="these" type="text" value="rather" />
<input name="those" type="text" value="contrived" />
</div>
</form>
您可以使用以下Javascript代码进行操作:
var formdata = {};
$('form').find('div.section')
.each(function(i, el) {
var sectionTitle = $(el)
.find('span.section_title')
.text();
$(el).find('input')
.each(function(i, el) {
var name = $(el).attr('name');
var value = $(el).val();
formdata[sectionTitle][name] = [value];
});
});
结果,在formdata
中,将是:
{'Section 1': {'this': 'this',
'that': 'is'},
'Section 2': {'these': 'rather',
'those': 'contrived'}}
当然,它不是为你的情况量身定制的,但它应该足够接近你的想法;如果没有,请随意评论要求澄清,我会尽力提供。 (顺便提一下,在您的问题中显示您正在使用的表单的HTML示例,可以提供更适合您情况的解决方案。)