如何解决收到 post 请求时出现的 502 错误?
How to fix 502 error getting on post request?
我有 node.js 应用程序,点击按钮后发送 post 请求,在 post 请求时应将电子邮件发送给管理员。可以在此处找到我发起请求的页面 link:https://blockmmerce.io/views/contact。
只要我单击按钮,就会调用事件侦听器,但它会尝试发送请求并 returns 返回 502 错误代码。
任何可能的修复方法?
contact.js:
$(document).ready(function () {
console.log("here...")
var enquirybutton = document.querySelector('#sendEnquiry');
enquirybutton.addEventListener('click', function (event) {
alert("clicked!!");
let name = $('#name').val();
let email = $('#email').val();
let message = $('#message').val();
event.preventDefault();
$.ajax({
url: "/sendEnquiry",
dataType: "json",
type: "post",
cache: false,
data: ({
"name": name,
"email": email,
"message": message
}),
success: function (response) {
alert("Enquiry sent successfully !!!")
},
error: function (textStatus, errorThrown) {
console.log("Error::::" + errorThrown);
console.log("status::::" + String(textStatus));
}
});
});
});
Index.js:
var express = require('express');
var router = express.Router();
var emailConfig = require('../config/email.config.js');
router.post('/sendEnquiry', function (req, res, next){
let name = req.body.name;
let email = req.body.email;
let message = req.body.message;
emailConfig.sendEmail(
'admin@blockmmerce.io',
'Enquiry',
`this is first query`
);
res.json({});
console.log("hello from send enquiry");
});
modules.exports = export;
email.config.js:
var nodemailer = require('nodemailer');
//--------------------------------------------------------
// Declarations
//--------------------------------------------------------
var senderEmail = 'info@server119.web-hosting.com';
// var password = '----';
//--------------------------------
// Mail Sending Email
//--------------------------------------------------------
var transporter = nodemailer.createTransport({
host: 'server119-3.web-hosting.com',
secure: true,
port: 465,
auth: {
user: 'info@blockmmerce.io',
pass: '------'
}
});
// ================================================================
// handle Sendmail
// ================================================================
var sendEMail = (emailId, subject, mailcontent) => {
let mailOptions = {
from: senderEmail,
to: emailId,
subject: subject,
html: mailcontent
};
return new Promise(function (resolve, reject) {
transporter.sendMail(mailOptions, function (err, info) {
if (err) {
reject(err);
} else {
resolve(info);
}
});
});
}
//--------------------------------------------------------
// Exporting All functions
//--------------------------------------------------------
module.exports = {
transporter,
senderEmail,
sendEMail
}
您必须添加内容类型并将数据作为字符串提交
$.ajax({
contentType: 'application/json',
data: JSON.stringify({
name:"Bob",
...
})
});
另外你必须return从服务器端响应用户,也不要使用等待和return立即响应用户,不需要等到邮件提交,因为这需要时间。
router.post('/sendEnquiry', function (req, res, next){
let name = req.body.name;
let email = req.body.email;
let message = req.body.message;
emailConfig.sendEmail(
'admin@blockmmerce.io',
'Enquiry',
// `Hi, I have an enquiry that: ${message}. You can reply back on my this email ${email}. Thanks, ${name}`
`${message}`
);
res.json({});
});
我有 node.js 应用程序,点击按钮后发送 post 请求,在 post 请求时应将电子邮件发送给管理员。可以在此处找到我发起请求的页面 link:https://blockmmerce.io/views/contact。
只要我单击按钮,就会调用事件侦听器,但它会尝试发送请求并 returns 返回 502 错误代码。
任何可能的修复方法?
contact.js:
$(document).ready(function () {
console.log("here...")
var enquirybutton = document.querySelector('#sendEnquiry');
enquirybutton.addEventListener('click', function (event) {
alert("clicked!!");
let name = $('#name').val();
let email = $('#email').val();
let message = $('#message').val();
event.preventDefault();
$.ajax({
url: "/sendEnquiry",
dataType: "json",
type: "post",
cache: false,
data: ({
"name": name,
"email": email,
"message": message
}),
success: function (response) {
alert("Enquiry sent successfully !!!")
},
error: function (textStatus, errorThrown) {
console.log("Error::::" + errorThrown);
console.log("status::::" + String(textStatus));
}
});
});
});
Index.js:
var express = require('express');
var router = express.Router();
var emailConfig = require('../config/email.config.js');
router.post('/sendEnquiry', function (req, res, next){
let name = req.body.name;
let email = req.body.email;
let message = req.body.message;
emailConfig.sendEmail(
'admin@blockmmerce.io',
'Enquiry',
`this is first query`
);
res.json({});
console.log("hello from send enquiry");
});
modules.exports = export;
email.config.js:
var nodemailer = require('nodemailer');
//--------------------------------------------------------
// Declarations
//--------------------------------------------------------
var senderEmail = 'info@server119.web-hosting.com';
// var password = '----';
//--------------------------------
// Mail Sending Email
//--------------------------------------------------------
var transporter = nodemailer.createTransport({
host: 'server119-3.web-hosting.com',
secure: true,
port: 465,
auth: {
user: 'info@blockmmerce.io',
pass: '------'
}
});
// ================================================================
// handle Sendmail
// ================================================================
var sendEMail = (emailId, subject, mailcontent) => {
let mailOptions = {
from: senderEmail,
to: emailId,
subject: subject,
html: mailcontent
};
return new Promise(function (resolve, reject) {
transporter.sendMail(mailOptions, function (err, info) {
if (err) {
reject(err);
} else {
resolve(info);
}
});
});
}
//--------------------------------------------------------
// Exporting All functions
//--------------------------------------------------------
module.exports = {
transporter,
senderEmail,
sendEMail
}
您必须添加内容类型并将数据作为字符串提交
$.ajax({
contentType: 'application/json',
data: JSON.stringify({
name:"Bob",
...
})
});
另外你必须return从服务器端响应用户,也不要使用等待和return立即响应用户,不需要等到邮件提交,因为这需要时间。
router.post('/sendEnquiry', function (req, res, next){
let name = req.body.name;
let email = req.body.email;
let message = req.body.message;
emailConfig.sendEmail(
'admin@blockmmerce.io',
'Enquiry',
// `Hi, I have an enquiry that: ${message}. You can reply back on my this email ${email}. Thanks, ${name}`
`${message}`
);
res.json({});
});