NodeJS中如何从input name字段获取单个值而非数组
问题根因
你的listName隐藏输入框写在了for循环内部,循环执行多少次就会生成多少个同名的listName字段,表单提交时多个同名字段会被解析为数组,所以你拿到的才是长度和列表项数一致的["home","home","home","home"]。
修复方案
把隐藏输入框移到for循环外面,整个表单只保留一个listName字段即可。
修改后的EJS表单代码:
<form action="/delete" method="POST"> <% for (let i=0; i<newListItems.length; i++) { %> <div class="item"> <input type="checkbox" onChange="this.form.submit()" name="checkboxname" value="<%=newListItems[i]._id%>"> <p><%= newListItems[i].name %></p> </div> <% } %> <!-- hidden字段移到循环外,整个表单只保留一个 --> <input type="hidden" name="listName" value="<%= listTitle %>"> </form>
修改后后端req.body.listName就会返回你期望的单个字符串"home",listName === day的判断逻辑也可以正常执行。
内容的提问来源于stack exchange,提问作者Golam Rabbani
相关产品推荐
相关产品推荐

