【问题标题】:Using jQuery Ajax with node.js and express to validate sending an email使用带有 node.js 和 express 的 jQuery Ajax 来验证发送电子邮件
【发布时间】:2020-07-06 00:51:14
【问题描述】:

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

注意:表单正在运行,并且所有电子邮件都已发送,但我只需要向用户说明它有效。

代码如下:

验证.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.")
    }
})
});

【问题讨论】:

    标签: javascript jquery node.js express contact-form


    【解决方案1】:

    错误说:错误空响应。

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

    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
        }
    })
    });
    

    【讨论】:

      猜你喜欢
      • 2013-09-20
      • 2014-02-07
      • 1970-01-01
      • 2018-01-01
      • 2017-12-25
      • 1970-01-01
      • 1970-01-01
      • 2013-12-21
      • 2017-07-21
      相关资源
      最近更新 更多