gpt4 book ai didi

javascript - jQuery 序列化多个表单并以 JSON 形式发送

转载 作者:行者123 更新时间:2023-12-02 19:40:36 25 4
gpt4 key购买 nike

我在一个页面上有多个表单,每个表单都会将单个项目添加到数据库中。还有一个“全部添加”按钮,可以发送所有产品数据。请参阅下面的基本 html:

<button type="submit">All all products</a>

<form>
<input type="hidden" name="Product" value="ProductA" />
<input type="checkbox" name="optionAll" value="Option All" /> Option All
<input type="checkbox" name="option" value="Option 1" checked="checked" /> Option 1
<input type="checkbox" name="option" value="Option 2" /> Option 2
<button type="submit">Add this product"</button>
</form>

<form>
<input type="hidden" name="Product" value="ProductB" />
<input type="checkbox" name="optionAll" value="Option All" /> Option All
<input type="checkbox" name="option" value="Option 1" checked="checked" /> Option 1
<input type="checkbox" name="option" value="Option 2" checked="checked" /> Option 2
<button type="submit">Add this product"</button>
</form>

我正在尝试将序列化的表单数据发布为以下 JSON 格式:

products = {
"ProductA": {
"option": ["Option 1"] // only 1 checkbox is checked
},
"ProductB": {
"optionAll": "Option All",
"option": ["Option 1", "Option 2"] // both checkboxes are checked
}
}

我一直在尝试映射序列化数据,但无法将其转换为上面那样的 JSON 格式。

data = $.map($('form').serializeArray(), function(el, i){
var json = {};
???
return json;
});
console.log(data)

感谢您的帮助!

最佳答案

var result = {};  // object to hold final result

$('button[type="submit"]').on('click', function() {

$('form').each(function() { // loop start for each form

var sr = $(this).serializeArray(),
options = [];

result[sr[0].value] = {}; // insert Product value and initiate it as object

$.each(sr, function() { // loop start for each checkbox

if(this.name == 'option') {

options.push(this.value);

}

});

// if all checkbox are checked then insert the property optionAll

if(options.length == $('input[type="checkbox"][name="option"]',this).length) {

result[sr[0].value].optionAll = 'Option All';

}

result[sr[0].value].option = options;

});

console.log(result);
});

关于javascript - jQuery 序列化多个表单并以 JSON 形式发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10435809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com