node.js - NodeJS-Express 联系表单模板在同一部分刷新
问题描述
我在提交联系表时遇到了一点问题。我在 NodeJS-Express 中使用 Nodemailer。
一切正常,除了我的联系表单位于模板的底部,并且在提交表单并使用 res.render(带有“已发送电子邮件”消息)后,模板从顶部重新加载,这对用户不是很友好。
知道如何使用 res.render 并留在模板的底部。
提前致谢
<form method="POST" action="send">
<label for="fname">First Name</label>
<input type="text" id="fname" name="firstname" placeholder="Your name..">
<label for="lname">Last Name</label>
<input type="text" id="lname" name="lastname" placeholder="Your last name..">
<label for="message">Message</label>
<textarea id="message" name="message" placeholder="Write something.." style="height:200px"></textarea>
<input type="submit" value="Submit">
和 app.js
transporter.sendMail(mailOptions, (error, info) => {
if (error) {
return console.log(error);
}
var sentmsg ="email was sent";
console.log('Message %s sent: %s', info.messageId, info.response);
res.render("website3dartist", {sentmsg: sentmsg})
});
解决方案
基本上你不能在res.render
没有重新渲染的情况下使用,因为res
它本身意味着服务器会给你新的响应,这意味着闪烁。
您可以删除res.render
并添加e.preventDefault()
到POST
表单以防止页面重新加载。
由于 的唯一目的transporter.sendMail
是记录消息,因此只需将其添加到它们。
推荐阅读
- sql - 在 PSQL 中编辑连接/连接表结果的结果
- javascript - 如何使用 setinterval 更改多个元素 innerHTML?
- microsoft-graph-api - b2c 用户的 Azure 的 Graph api passwordprofile NULL
- google-sheets-api - Google Sheets API批量更新updateChartSpec不更新右轴viewWindowMax
- swift - 是否像文档中那样在 Swift 中隐藏了函数的实现?
- excel - xlsxwriter 在“thisworkbook”上添加一个宏以在打开时执行
- docker - Multi-Arch Dockerfile - 有没有办法根据架构选择要复制的源
- oracle - 如何获取oracle中表的最后访问TIMESTAMP?
- python - 在本地 HTML 文件上使用 Python 中的 Beautiful Soup 错误的重音字符
- powershell - 从桌面启动脚本时点源不起作用