【问题标题】:How to fix 502 error getting on post request?如何修复发布请求时出现的 502 错误?
【发布时间】:2019-08-24 14:04:20
【问题描述】:

我有 node.js 应用程序,单击按钮发送帖子请求时,应将电子邮件发送给管理员。可以在此处找到我发起请求的页面链接:https://blockmmerce.io/views/contact

只要我单击按钮,就会调用事件侦听器,但它会尝试发送请求并返回 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
}

【问题讨论】:

    标签: node.js ajax email post bad-gateway


    【解决方案1】:

    您必须添加内容类型并将数据作为字符串提交

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

    另外你必须从服务器端返回响应给用户,也不要使用等待并立即返回响应给用户,不需要等到邮件提交,因为这需要时间。

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

    【讨论】:

    猜你喜欢
    • 2019-12-13
    • 2021-03-02
    • 1970-01-01
    • 2019-05-03
    • 2021-10-02
    • 1970-01-01
    • 1970-01-01
    • 2016-09-15
    • 2015-10-07
    相关资源
    最近更新 更多