【问题标题】:Loss data after space in EJS formEJS 格式空格后丢失数据
【发布时间】: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。以下是我的故障排除:

  1. 在渲染 EJS 文件时,昵称在列表中的空格后正确显示,因此所有数据都从 DB 传输到&lt;%- person.title %&gt;
  2. 我在列表中硬编码昵称,即&lt;option value='John H'&gt;&lt;%- person.title %&gt;&lt;/option&gt;,它以相同的方式进入后端文件,因此客户端和服务器端之间没有任何损失。
  3. 我在数据库中的昵称中添加了下划线,即John_H,它可以正常工作而不会丢失,也就是说它与空间有关。
    有人遇到过这样的问题吗?
    提前谢谢您。

【问题讨论】:

    标签: javascript html ejs


    【解决方案1】:

    比较工作和不工作的代码:

    <option value=<%- person.title %>>
    

    <option value='John H'>
    

    有什么不同?

    引用

    如果属性值周围没有引号,则空格结束值,空格之后的任何内容都开始新属性

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 1970-01-01
      • 2014-06-19
      • 1970-01-01
      • 1970-01-01
      • 2019-11-11
      • 2014-07-16
      • 2011-03-03
      • 1970-01-01
      相关资源
      最近更新 更多