【问题标题】:Remove quotes from boolean when form is submitted提交表单时从布尔值中删除引号
【发布时间】:2018-11-22 12:10:36
【问题描述】:

我有一个简单的表格。

它 POST 到服务器(节点 js / express),并且在选中时有一个带有“真”值的复选框。

<form id="demo_form" action="/submit_demo" method="POST">
  <input type="checkbox" id="demo_input" name="demo_input" value=true />
</form>

当我在服务器上收到数据时,我的值用引号括起来 - 例如。 “”。

这会在向我的 api 提交数据时导致问题,该 api 严格接受布尔值作为 true(无引号)。

在提交到我的 api 之前,我可以轻松地手动从任何数据中删除引号,但是在处理大量字段时会有点痛苦。

是否有一个简单的解决方案可以将布尔值从表单发送到服务器而不是字符串?

任何意见都非常感谢:)

【问题讨论】:

  • POST/GET 参数没有任何“类型”,值总是作为字符串发送。
  • 复选框不是这样工作的。如果选中,它们将作为常规键值对在提交的数据中,键是名称。没有检查,完全没有。因此,布尔值存在/不存在,从不在 value 中。

标签: javascript node.js forms express boolean


【解决方案1】:

如果表单已发布并且您没有选中复选框,则它不会包含在有效负载中。所以在服务器端应该很容易识别是否检查了某些内容。

请参阅此代码笔以供参考:https://codepen.io/anon/pen/KrowNJ

<form method="POST">
  <div>
    <input type="text" name="message" placeholder="Enter your message...">
  </div>
  <div>
    <input type="checkbox" id="subscribeNews" name="subscribe">
    <label for="subscribeNews">Subscribe to newsletter?</label>
  </div>
  <div>
    <button type="submit">Subscribe</button>
  </div>
</form>

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-19
    • 1970-01-01
    • 1970-01-01
    • 2021-10-28
    • 2011-05-28
    • 1970-01-01
    • 2012-01-15
    • 2015-03-12
    相关资源
    最近更新 更多