【发布时间】:2020-08-23 04:04:58
【问题描述】:
有一个带有表单的 EJS 文件,它有一个 <select> 下拉列表。
<form action="/scheduler/jobEvent" method="POST">
<div class="form-group">
<select class="custom-select" id="addJobEvent" name="event[title]">
<option selected>Select</option>
<!-- populate personnel list -->
<% personnelList.forEach(person => { %>
<option value=<%- person.title %>><%- person.title %></option>
<% }) %>
</select>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-outline-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-outline-success">Save Event</button>
</div>
</form>
该列表是从 DB 动态填充的。点击提交将表单的数据发送到后端的 JS 文件,在那里进一步处理:
router.post('/scheduler/jobEvent', middleware.loggedAsAdmin, async (req,res) => {
var personTitle = req.body.event.title;
console.log(personTitle);
});
该列表列出了人的昵称,由名字和姓氏的第一个字母组成,例如
John H, Mike K 等。我发现在从表单传输到后端时,空格后面的昵称中的所有内容都丢失了。那就是 John H 在 JS 中 console.log 时缩短为 John。以下是我的故障排除:
- 在渲染 EJS 文件时,昵称在列表中的空格后正确显示,因此所有数据都从 DB 传输到
<%- person.title %>。
- 我在列表中硬编码昵称,即
<option value='John H'><%- person.title %></option>,它以相同的方式进入后端文件,因此客户端和服务器端之间没有任何损失。
- 我在数据库中的昵称中添加了下划线,即
John_H,它可以正常工作而不会丢失,也就是说它与空间有关。
有人遇到过这样的问题吗?
提前谢谢您。
【问题讨论】:
标签: javascript html ejs