我在提交联系表格方面有一些问题。我在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})
});
答案 0 :(得分:1)
基本上,res.render
本身不能使用res
,因为res.render
本身意味着服务器将为您提供新的响应,这意味着闪烁。
您可以删除e.preventDefault()
并将POST
添加到transporter.sendMail
表单中,以防止页面重新加载。
由于Changing password for <user>
的唯一目的是记录消息,因此只需将其添加到消息中。