我提交联系表格时遇到一些问题。我在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
的唯一目的是记录消息,只需将其添加到消息中即可。