Использование jQuery Ajax с node.js и express для проверки отправки электронной почты - PullRequest
0 голосов
/ 25 марта 2020

Итак, у меня есть эта контактная форма на веб-сайте, который я создаю, я использую шаблон, который я нашел в Интернете, который использует ajax, чтобы проверить, что форма работает и электронное письмо было отправлено, проблема в том, что этот файл, который проверяет форму, настроен на работу с PHP, я думаю, поэтому я попытался изменить файл с ajax, чтобы он работал с моим приложением узла, но я в итоге загружаю форму навсегда и получаю Failed загрузить ресурс: net :: 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.")
    }
})
});

1 Ответ

1 голос
/ 25 марта 2020

Ошибка говорит: Ошибка Пустой ответ.

Так почему бы просто не отправить ответ?

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