【问题标题】:generating same forms with hogan templating in node js在节点 js 中使用 hogan 模板生成相同的表单
【发布时间】:2017-07-24 12:44:56
【问题描述】:
{#loop}
<form action="/pay" method="post">
    <input placeholder="Name" id="Person" type="text" class="validate" name="Person">
    <label for="Person">Person</label>
    <input placeholder="Ex: 20" id="Amount" type="text" class="validate" name="amount">
    <label for="Amount">Amount</label>
<input class="btn waves-effect waves-light right" type="submit" id="submit-form" tabindex="0" value="add" /> 
</form>
{/loop}

路由侧码

.post("/pay", (req, res) => {
pay(req.body.amount, req.body.Person)})

我使用 Hogan 模板生成了两种表格。但是,当我填写两个表格并通过单击提交按钮提交其中一个时。我未提交的其他表单丢失了数据。我该如何避免这种情况,所以我不会再次输入并提交?

【问题讨论】:

    标签: javascript node.js forms loops hogan.js


    【解决方案1】:

    这与 hogan 模板无关;问题是当您单击任何 HTML 表单上的提交按钮时,默认情况下整个页面将重新加载。好吧,更具体地说,POST 操作将 POST 到有问题的地址(在您的情况下为 /pay),这通常会导致请求/响应周期导致浏览器刷新其呈现的内容。

    如果您实际上想要在页面上使用多个表单,您有几个选项可以解决这个问题,但今天最常见的一种是使用 Javascript 使用 XmlHttpRequest 或 Fetch api 向服务器发出请求(取决于您所针对的浏览器,是否要使用 polyfill 等)。

    【讨论】:

    • 更清楚。我必须在会话中保存表单输入吗?因此,当页面重新加载时,表单数据仍然存在。我正在使用节点和 Express。任何替代品或中间件都可以用来解决这个问题
    • 那么您需要更新您的问题以更好地反映您的情况和目标。我看不出你现在的意思,因为你的问题和评论不是一回事。
    • 对不起,我理解错了。我对此很陌生,所以经过一些研究后我很好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多