Javascript 如何将单个表单中的数据分离到JSON数组中?
视图(把手) 我试图创建一个可以有多个产品(选项)及其子选项的表单,并将它们分别存储在对象的JSON数组中 虽然视图本身工作正常,但数据是作为单个JSON对象发送的,这是预期的,因为它们是以单一形式发送的 我想知道是否有一种方法可以分别分离数据并作为JSON数组发送,或者以某种形式发送,这种形式可以在不使用正则表达式的情况下进行迭代 //在我的帮助下,使用Express和把手解决了这个问题。我想删除这个问题,因为它是链接中已回答问题的副本,但我决定将它留给与我有类似问题的任何人 就像链接中的解决方案一样,我通过在输入中添加数据项标记对表单进行分组,如下所示Javascript 如何将单个表单中的数据分离到JSON数组中?,javascript,html,node.js,express,Javascript,Html,Node.js,Express,视图(把手) 我试图创建一个可以有多个产品(选项)及其子选项的表单,并将它们分别存储在对象的JSON数组中 虽然视图本身工作正常,但数据是作为单个JSON对象发送的,这是预期的,因为它们是以单一形式发送的 我想知道是否有一种方法可以分别分离数据并作为JSON数组发送,或者以某种形式发送,这种形式可以在不使用正则表达式的情况下进行迭代 //在我的帮助下,使用Express和把手解决了这个问题。我想删除这个问题,因为它是链接中已回答问题的副本,但我决定将它留给与我有类似问题的任何人 就像链接中的解决
<select data-item="1" class="ui search dropdown" name="category1_1">
<select data-item="1" class="ui search dropdown" name="category1_2">
...
<select data-item="1" class="ui search dropdown" name="design_name1">
<select data-item="1" name="skills1" class="ui search dropdown">
...
// the second group should have 2 as a data-item value
...
...
//第二个组的数据项值应为2
和javascript
<script>
const formsLimit = 5;
let forms = 1;
$(document).ready(function () {
$('.ui.dropdown')
.dropdown();
});
function addform() {
forms += 1;
console.log(forms);
if (forms > formsLimit) {
forms = formsLimit
return alert(`${forms} only!`);
}
// =========== duplicates and appends form's inputs with increased name ==========
const html = `
<br>
Category ${forms}
<br><br>
<div class="fields">
<div class="field">
<label>Category 1</label>
<select class="ui search dropdown" name="category${forms}_1">
<option value="A1">category1_A1</option>
<option value="AF">category1_A2</option>
</select>
</div>
<div class="field">
<label>Category 2</label>
<select class="ui search dropdown" name="category${forms}_2">
<option value="1">1.category1_2.A1</option>
<option value="2">2.category1_2.A2</option>
<option value="3">3.category1_2.A3</option>
<option value="4">4.category1_2.A4</option>
</select>
</div>
<div class="field" id="category3">
<label>Category 3</label>
<select class="ui search dropdown" name="category${forms}_3">
<option value="1">1.category1_3.A1</option>
<option value="2">2.category1_3.A2</option>
<option value="3">3.category1_3.A3</option>
<option value="4">4.category1_3.A4</option>
</select>
</div>
</div>
<div class="field">
<input type="text" placeholder="design_name" name="design_name${forms}">
</div>
<select name="skills${forms}" multiple="" class="ui fluid dropdown">
<option value="1">design_name1_A1</option>
<option value="2">design_name1_A2</option>
<option value="3">design_name1_A3</option>
<option value="4">design_name1_A4</option>
</select>
<br>
`;
// ======================== END CONST HTML =======================
$('.order_list').append(html)
$('.ui.dropdown').dropdown();
}
</script>
const dataArr = [];
for (let i = 0; i < forms; i++) {
let formData = $(`[data-item="${i + 1}"]`).serializeArray();
dataArr.push(formData);
}
constdataarr=[];
for(设i=0;i
结果将由每个类别组分别存储在dataArr中请举例说明数据的外观。对于JSON,你指的是对象或对象数组,对吗?现在数据以单个JSON对象的形式发送,比如{cat1,cat1.1,cat1.2,cat2,cat2.1…}。我希望它们以[{cat1.1,cat1.2,cat1.3},{cat2.1,cat2.2,cat2.3},…]的形式发送,这样我可以很容易地将每一个cats分开。在表单发送数据的方式中似乎没有添加逻辑,也不必添加逻辑。服务器可能会将结果解析为JSON。因此,您最好将服务器端的数据分组。如果您不知道如何执行此操作,请将节点应用程序的
app.get('/design/add')
端点添加到问题中。哦,对不起,我添加了
<select data-item="1" class="ui search dropdown" name="category1_1">
<select data-item="1" class="ui search dropdown" name="category1_2">
...
<select data-item="1" class="ui search dropdown" name="design_name1">
<select data-item="1" name="skills1" class="ui search dropdown">
...
// the second group should have 2 as a data-item value
const dataArr = [];
for (let i = 0; i < forms; i++) {
let formData = $(`[data-item="${i + 1}"]`).serializeArray();
dataArr.push(formData);
}