在同一部分中刷新NodeJS-Express Contact Form模板

时间:2019-03-10 02:21:35

标签: node.js express contact-form nodemailer

我在提交联系表格方面有一些问题。我在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})
        });

1 个答案:

答案 0 :(得分:1)

基本上,res.render本身不能使用res,因为res.render本身意味着服务器将为您提供新的响应,这意味着闪烁。

您可以删除e.preventDefault()并将POST添加到transporter.sendMail表单中,以防止页面重新加载。

由于Changing password for <user>的唯一目的是记录消息,因此只需将其添加到消息中。