Javascript Sendgrid和AWS Lambda无服务器表单

Javascript Sendgrid和AWS Lambda无服务器表单,javascript,node.js,amazon-web-services,aws-lambda,sendgrid,Javascript,Node.js,Amazon Web Services,Aws Lambda,Sendgrid,我正在尝试使用Sendgrid和AWS Lambda设置一个超级基本的电子邮件表单。我从表单向Lambda函数发送数据时遇到问题。我得到的错误是“JSON中位置0处的意外标记u”。我知道这与我如何送出尸体有关。下面是我的Lambda函数的代码 require("dotenv").config(); const sendgrid = require('@sendgrid/mail'); exports.handler = (event, context, callback) => { se

我正在尝试使用Sendgrid和AWS Lambda设置一个超级基本的电子邮件表单。我从表单向Lambda函数发送数据时遇到问题。我得到的错误是“JSON中位置0处的意外标记u”。我知道这与我如何送出尸体有关。下面是我的Lambda函数的代码

require("dotenv").config();
const sendgrid = require('@sendgrid/mail');

exports.handler = (event, context, callback) => {
sendgrid.setApiKey(process.env.SENDGRID_API_KEY);
var data = JSON.parse(event.body);
const msg = {
    to: data.to,
    from: 'test@gmail.com',
    subject: data.subject,
    text: data.message,
};
sendgrid.send(msg);
callback(null, 'Message Sent');
}
这是我表单的Javascript

$(document).ready(function() {

$("#submit").click(function(e) {
    e.preventDefault();

    var to = $("#to").val();
    var subject = $("#subject").val();
    var message = $("#message").val();

    var data = {
        'to': to,
        'subject': subject,
        'message': message
    }

    $.ajax({
        type: "POST",
        url: 'https://xxxxxxxx.execute-api.us-east-1.amazonaws.com/prod/xxxxx',
        contentType: 'application/json',
        data: JSON.stringify({data}),
        headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
        },
        success: function(res){
            console.log('Email was sent.');
        },
        error: function(){
            console.log('Error.');
        }
    });

})

});

谢谢

问题是您试图解析的是JSON对象,而不是字符串

var data=JSON.parse(event.body)

这是不对的。分配

var data=event.body

从那以后就应该小心了


希望有帮助。

尝试在“数据”对象中的数据周围加引号:data={“to”:“\”“+to+”\”“,…},看看这是否有帮助。在ajax设置之外执行JSON.stringify,以便您可以控制台。记录结果并确保您知道发送的内容。如果它看起来像OK JSON(或者在字符串化时没有抛出异常),那么问题就出在lambda方面。检查以确保event.body确实存在,console.log以进行检查。您遇到的特定JSON解析错误通常表示您正在尝试解析未定义的值。Lambda不会自动解析JSON主体,因此这不应该是问题所在。更可能的是,
event.body
实际上是JSON中位置0处未定义的预期标记u。当您试图解析JSON对象或甚至解析未定义的对象时,会发生此错误。您尝试打印console.log(event.body)以签出值。