Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery.post()发送电子邮件,但不发送';t在不刷新服务器的情况下访问.done()/.fail()/.always()_Javascript_Jquery_Express_Nodemailer - Fatal编程技术网

Javascript jQuery.post()发送电子邮件,但不发送';t在不刷新服务器的情况下访问.done()/.fail()/.always()

Javascript jQuery.post()发送电子邮件,但不发送';t在不刷新服务器的情况下访问.done()/.fail()/.always(),javascript,jquery,express,nodemailer,Javascript,Jquery,Express,Nodemailer,基本上,我只是想在不刷新页面的情况下将表单信息发送到电子邮件中,我一路做到了这一点。这里的问题是,即使它正确地发送电子邮件,它也不会清除表单,因为$.post()从未到达.done()或.fail()或.always()。虽然我注意到,当我使用nodemon时,当我更改代码并保存它时,它会刷新服务器,然后进入.fail()和.always(),但不会进入.done() 你们知道我应该怎么做才能使$.post()正确完成/失败/总是,拜托 代码如下所示: HTML 节点的东西在这里 app.pos

基本上,我只是想在不刷新页面的情况下将表单信息发送到电子邮件中,我一路做到了这一点。这里的问题是,即使它正确地发送电子邮件,它也不会清除表单,因为$.post()从未到达.done()或.fail()或.always()。虽然我注意到,当我使用nodemon时,当我更改代码并保存它时,它会刷新服务器,然后进入.fail()和.always(),但不会进入.done()

你们知道我应该怎么做才能使$.post()正确完成/失败/总是,拜托

代码如下所示:

HTML

节点的东西在这里

app.post("/trial-submission", function(req, res){
  const data = req.body;

  let transporter = nodemailer.createTransport({
       service: "mail",
       auth: {
         user: "send@mail.com",
         pass: "password"
       }
  });

  let mailOptions = {
    from:'send@mail.com',
    to:'receive@mail.com',
    subject: 'testing',
    html:`
      Company: ${data.company}<br>
      Contact person: ${data.person}<br>
      Phone: ${data.phone}<br>
      E-mail: ${data.email}<br>
      Note: ${data.note}
    `
  };

  transporter.sendMail(mailOptions, function(err, data){
    if(err){
      console.log('Error Occurs', err);
    } else {
      console.log('Email Sent!');
    }
  });
});
app.post(“/试提交”,功能(请求、回复){
常量数据=请求主体;
让transporter=nodeEmailer.createTransport({
服务:“邮件”,
认证:{
用户:“send@mail.com",
通行证:“密码”
}
});
让邮件选项={
发件人:'send@mail.com',
致:'receive@mail.com',
主题:"测试",,
html:`
公司:${data.Company}
联系人:${data.person}
电话:${data.Phone}
电子邮件:${data.email}
注意:${data.Note} ` }; transporter.sendMail(邮件选项、函数(错误、数据){ 如果(错误){ log('发生错误',err); }否则{ log('Email Sent!'); } }); });
您需要在sendMail呼叫中发送响应,否则您的浏览器将无法收到任何信息。试试这个:

transporter.sendMail(mailOptions, function(err, data){
    if(err){
      console.log('Error Occurs', err);
      res.sendStatus(400);
    } else {
      console.log('Email Sent!');
      res.sendStatus(204);
    }
  });

400是一个简单的“错误请求”,204是“成功/无内容”。您可以进一步修改这些内容,但目前客户端将接收响应,以便继续。

您需要在sendMail呼叫中发送响应,否则您的浏览器将无法接收任何内容。试试这个:

transporter.sendMail(mailOptions, function(err, data){
    if(err){
      console.log('Error Occurs', err);
      res.sendStatus(400);
    } else {
      console.log('Email Sent!');
      res.sendStatus(204);
    }
  });
400是一个简单的“错误请求”,204是“成功/无内容”。您可以进一步修改这些内容,但目前客户端将收到响应,因此您可以继续

transporter.sendMail(mailOptions, function(err, data){
    if(err){
      console.log('Error Occurs', err);
      res.sendStatus(400);
    } else {
      console.log('Email Sent!');
      res.sendStatus(204);
    }
  });