Javascript 为什么此客户端$.get()请求仅成功运行服务器端代码?

Javascript 为什么此客户端$.get()请求仅成功运行服务器端代码?,javascript,jquery,node.js,ajax,express,Javascript,Jquery,Node.js,Ajax,Express,我已经创建了一个联系人表单,它将get请求发送到我从节点(express)服务器本地托管的路由。我在dom上单击元素时发送get请求 ($(document).ready(function () { $('#sendEmail').click((e) => { e.preventDefault(); let name = $('#name').val(); let email = $('#email').val(); $.get("http://lo

我已经创建了一个联系人表单,它将get请求发送到我从节点(express)服务器本地托管的路由。我在dom上单击元素时发送get请求

($(document).ready(function () {
  $('#sendEmail').click((e) => {
    e.preventDefault();

    let name = $('#name').val();
    let email = $('#email').val();

    $.get("http://localhost:3000/send", {name: name, email: email})
    .done(() => {
        alert('success!');
    })
    .fail(() => {
        alert('That did not work');
    })
})($)
节点服务器根据从客户端收集的信息生成电子邮件。好消息是,生成的电子邮件工作正常,并通过电子邮件发送到我的gmail帐户


服务器端的一切都是成功的,但之后没有客户端代码运行。我的$.done()函数和$.fail()函数最终都不会运行。我需要做什么才能在电子邮件发送(或不发送)后运行客户端代码

因为您不向客户端响应结果。
您需要在“sendMail”的回调中调用“res”而不是“response”:

app.get('/send', (req, res) => {
  const mailOptions = {
    name: req.query.name,
    email: req.query.email,
    message: req.query.message,
    to: "",
    from: req.query.name,
    text: ""
  }

  smtpTransport.sendMail(mailOptions, (error, response) => {
    if (error) {
      console.log(error);

      //response.end('error');
      res.end('error'); // <=====================

    } else {
      console.log('Email sent!');
      //response.end('sent')
      res.end('Email sent!'); // <=====================
    }
  })
})
app.get('/send',(req,res)=>{
常量邮件选项={
名称:req.query.name,
电子邮件:req.query.email,
消息:req.query.message,
至:“,
from:req.query.name,
案文:“”
}
smtpTransport.sendMail(邮件选项,(错误,响应)=>{
如果(错误){
console.log(错误);
//response.end('error');

res.end('error');//有控制台错误吗?目前没有@dannya几分钟后,我在控制台上记录了net::ERR_EMPTY_响应。本文讨论了这一点:电子邮件也发送了不止一次。这是一种我当然不熟悉的奇怪行为。@DannyOh哇!这似乎奏效了。我从未想过要尝试一下。
app.get('/send', (req, res) => {
  const mailOptions = {
    name: req.query.name,
    email: req.query.email,
    message: req.query.message,
    to: "",
    from: req.query.name,
    text: ""
  }

  smtpTransport.sendMail(mailOptions, (error, response) => {
    if (error) {
      console.log(error);

      //response.end('error');
      res.end('error'); // <=====================

    } else {
      console.log('Email sent!');
      //response.end('sent')
      res.end('Email sent!'); // <=====================
    }
  })
})