简体   繁体   English

如何修复502错误在请求后出现?

[英]How to fix 502 error getting on post request?

I have node.js app that upon click of a button send post request and on post request email should be sent to the admin. 我有node.js应用程序,单击按钮即可发送发帖请求,并在发帖请求后将电子邮件发送给管理员。 The page link from where I initiate request can be found here: https://blockmmerce.io/views/contact . 可以在此处找到发起请求的页面链接: https : //blockmmerce.io/views/contact

As soon as I click the button the event listener is called but it tries to send the request and returns back with 502 error code. 一旦单击按钮,事件侦听器就会被调用,但它会尝试发送请求并返回502错误代码。

any possible fix? 任何可能的解决办法?

contact.js: 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: 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: 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
}

You have to add content type and submit data as string 您必须添加内容类型并以字符串形式提交数据

$.ajax({
    contentType: 'application/json',
    data: JSON.stringify({
        name:"Bob",
        ...
    })
});

Also you have to return response to user from the server side, also don't use await and return response immediately to user, no need to wait till the mail to be submitted, because it will take time. 另外,您必须从服务器端向用户返回响应,也不要使用await并立即将响应返回给用户,无需等待邮件提交,因为这会花费时间。

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({});

});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 如何解决在 nodejs 中发出 POST 请求时遇到的此错误 - How do I fix this error that I'm getting while making a POST request in nodejs 如何修复“隧道服务器离线:请求失败,状态码为 502”的本地隧道错误 - how to fix 'tunnel server offline: Request failed with status code 502' error of localtunnel 如何解决无法从发布请求中获取文本回复的问题 - How to fix not getting text response from Post request 如何在节点js中创建日志文件出现502错误? - How to create log file in node js getting 502 error? 对NGINX服务器上托管的Node.js express服务器的cURL POST请求返回502错误 - cURL POST request to Node.js express server hosted on NGINX server returns a 502 error aws elasticsearch在发布请求时收到签名错误 - aws elasticsearch getting signature error on post request axios 发布请求得到错误 500 fdretdrgfdg - axios post request getting error 500 fdretdrgfdg 使用 JSON 发出 POST 请求时出错 - Getting error while POST request with JSON 提交发布路线时,如何解决获取传递给ejs文件的数据的参考错误? - How to fix getting a reference error of data that I passed into the ejs file when I submit the post route? 继续在Node.js服务器上收到502错误 - Keep getting a 502 error on nodejs server
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM