【发布时间】:2023-03-26 10:55:01
【问题描述】:
这是我的 EJS 代码:
<form action="/" method="POST">
<% items.forEach((item)=>{ %>
<div class="item">
<input type="checkbox" name="checkbox" value="<%=item._id%>" onchange="this.form.submit()">
<p><%= item.name %></p>
</div>
<% }) %>
</form>
这里是 app.js:
app.post('/',(req,res)=>{
console.log(req.body.checkbox);
})
我的问题是:
1) 为什么它只记录选中的复选框的值(假设有3个项目)而不是3个值,是因为post方法只发布具有checked属性的复选框的值==真的吗?
2) 如果我添加另一个复选框,如下所示,如果我尝试console.log(req.body.item_id),为什么它会返回 undefined?
<form action="/" method="POST">
<% items.forEach((item)=>{ %>
<div class="item">
<input type="checkbox" name="checkbox" value="<%=item._id%>" onchange="this.form.submit()">
<p><%= item.name %></p>
<input type="checkbox" name="item_id" value="<%=item._id%>">
</div>
<% }) %>
</form>
3) 我尝试在上面做同样的事情,但这次使用的是input 类型的text。为什么console.log(req.body.item_id) 显示 3 个值而不是 1(与问题 1 中选中的复选框相对应)?
<form action="/" method="POST">
<% items.forEach((item)=>{ %>
<div class="item">
<input type="checkbox" name="checkbox" value="<%=item._id%>" onchange="this.form.submit()">
<p><%= item.name %></p>
<input name="item_id" value="<%=item._id%>">
</div>
<% }) %>
</form>
感谢所有回复。谢谢!
【问题讨论】:
-
1.因为您正在记录
checkbox值,这是该输入字段的名称。尝试console.log(req.body)以查看 reqBody 中的所有值并且如果您有两个具有相同名称的复选框并尝试像console.log(req.body.<your check box name here>)一样记录将记录复选框,如果您检查这些复选框值的两个数组,则会记录该复选框