使用 jQuery Ajax 和 node.js and express 来验证发送电子邮件

Using jQuery Ajax with node.js and express to validate sending an email

所以,我在我正在制作的网站上有这个联系表格,我正在使用我在网上找到的模板,该模板使用 ajax 来验证表格是否有效并且电子邮件已发送,问题是这个验证表单的文件设置为与 PHP 一起工作,我想,所以我尝试修改具有 ajax 的文件以使其与我的节点应用程序一起工作,但我最终得到了表单永远加载,我无法加载资源:net::ERR_EMPTY_RESPONSE 在控制台中。

注意:表格正在运行,所有内容和电子邮件都已发送,但我只需要向用户表明它有效。

代码如下:

validate.js:

$.ajax({
  method: "POST",
  url: "/home",
  data: str,
  success: function(msg) {
    if (msg == 'OK') {
      this_form.find('.loading').slideUp();
      this_form.find('.sent-message').slideDown();
      this_form.find("input:not(input[type=submit]), textarea").val('');
    } else {
      this_form.find('.loading').slideUp();
      this_form.find('.error-message').slideDown().html(msg);
    }
  }
})

index.js:

const express    = require("express"),
      router     = express.Router(),
      nodemailer = require("nodemailer"),
      mailGun    = require("nodemailer-mailgun-transport");

router.get("/home", (req, res) => {
    res.render("index");
});

router.post("/home", (req, res) => {
    let { firstName, lastName, email, website, company, message } = req.body;
    console.log("Data: ", req.body);

let mailOptions = {
    from: email,
    to: "myemail@email.com",
    subject: "No Subject",
    html:   "<h3>First Name: " + firstName + "</h3>" +
            "<h3>Last Name: " + lastName + "</h3>" +
            "<h3>Email: " + email + "</h3>" +
            "<h3>Company: " + company + "</h3>" +
            "<h3>Website: " + website + "</h3>" +
            "<h3>Message: " + message + "</h3>"
}

smtpTransport.sendMail(mailOptions, (error, response) => {
    if (error) {
        console.log(error)
    } else {
        console.log("Successfully sent email.")
    }
})
});

错误提示:错误为空响应。

那你为什么不直接发送回复呢?

router.post("/home", (req, res) => {
    let { firstName, lastName, email, website, company, message } = req.body;
    console.log("Data: ", req.body);

let mailOptions = {
    from: email,
    to: "myemail@email.com",
    subject: "No Subject",
    html:   "<h3>First Name: " + firstName + "</h3>" +
            "<h3>Last Name: " + lastName + "</h3>" +
            "<h3>Email: " + email + "</h3>" +
            "<h3>Company: " + company + "</h3>" +
            "<h3>Website: " + website + "</h3>" +
            "<h3>Message: " + message + "</h3>"
}

smtpTransport.sendMail(mailOptions, (error, response) => {
    if (error) {
        console.log(error);
        res.status(500).send('false');  // <----- HERE
    } else {
        console.log("Successfully sent email.");
        res.send("OK");   // <------------- HERE
    }
})
});