【发布时间】:2020-10-11 20:39:34
【问题描述】:
视图(车把)
{{!< main}}
<form class="ui form" action="/design/add" method="POST">
<div class="order_list">
<h1>Add Product</h1>
<br>
{{!-- <input type="file" name="image_main" placeholder="main image"> --}}
<br>
<br>
Category 1
<br><br>
<div class="fields">
<div class="field">
<label>Category 1</label>
<select class="ui search dropdown" name="category1_1">
<option value="A1">category1_1_A1</option>
<option value="AF">category1_1_A2</option>
</select>
</div>
<div class="field">
<label>Category 2</label>
<select class="ui search dropdown" name="category1_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="category1_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_name1">
</div>
<select name="skills1" 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><br>
</div>
<button type="submit">submit</button>
</form>
<br><br>
<button class="ui green large button" onclick="addform()">+</button>
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>
设计/添加路由器
router.post('/add', (req, res) => {
// destructuring data
const {
category1_1,
category1_2,
category1_3,
design_name1,
skills1,
...
categoryN_1
categoryN_2
categoryN_3,
design_nameN,
skillsN
} = req.body;
// somehow seperate them into JSON array of objects
// ... other code
});
我正在尝试制作一个可以包含多个产品(选项)及其子选项的表单,并将它们分别存储在 JSON 对象数组中。
虽然视图本身运行良好,但数据作为单个 JSON 对象发送,这是意料之中的,因为它们采用单一形式。
我想知道是否有办法将数据分别分开并作为 JSON 数组发送,或者以某种可以在不使用正则表达式的情况下进行迭代的形式发送。
//使用 Express 和 Handlebars
【问题讨论】:
-
您能否举例说明数据的外观。对于 JSON,您的意思是对象或对象数组,对吧?
-
现在数据以单个 JSON 对象发送,例如 {cat1 , cat1.1, cat1.2, cat2, cat2.1 ...}。我希望它们以 [ { cat1.1, cat1.2, cat1.3}, {cat2.1, cat2.2, cat2.3 }, .... ] 的形式发送,这样我就可以轻松地将每只猫分开跨度>
-
表单发送数据的方式似乎没有添加逻辑,也没有必要添加。服务器可能会将结果解析为 JSON。因此,您不妨将数据在服务器端分组。如果您不知道该怎么做,请将您的节点应用程序的
app.get('/design/add')端点添加到问题中。 -
对不起,我已经添加了
标签: javascript html node.js express