Javascript 为什么此客户端$.get()请求仅成功运行服务器端代码?
我已经创建了一个联系人表单,它将get请求发送到我从节点(express)服务器本地托管的路由。我在dom上单击元素时发送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
($(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!'); // <=====================
}
})
})