Javascript nodejs https状态200,但正文响应为空,ajax调用正常,但返回错误状态0
我正在使用aws文档中的代码在静态站点上实现联系人表单。当我测试nodejs lambda函数时,它是成功的,但返回的结果是Javascript nodejs https状态200,但正文响应为空,ajax调用正常,但返回错误状态0,javascript,node.js,ajax,amazon-web-services,Javascript,Node.js,Ajax,Amazon Web Services,我正在使用aws文档中的代码在静态站点上实现联系人表单。当我测试nodejs lambda函数时,它是成功的,但返回的结果是null 与API网关中的后测试结果相同。它返回: HTTP状态:200 响应正文:空 对于方法执行,它说Models:application/json=>Empty。有问题吗?如果是这样的话,我不知道该改变什么 var AWS = require('aws-sdk'); var ses = new AWS.SES(); var RECEIVER = 'name@exam
null
与API网关中的后测试结果相同。它返回:
HTTP状态:200响应正文:空
对于方法执行,它说
Models:application/json=>Empty
。有问题吗?如果是这样的话,我不知道该改变什么
var AWS = require('aws-sdk');
var ses = new AWS.SES();
var RECEIVER = 'name@example.com';
var SENDER = 'name@example.com';
var response = {
"isBase64Encoded": false,
"headers": { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': 'example.com'},
"statusCode": 200,
"body": "{\"result\": \"Success.\"}"
};
exports.handler = function (event, context) {
console.log('Received event:', event);
sendEmail(event, function (err, data) {
context.done(err, null);
});
};
function sendEmail (event, done) {
var params = {
Destination: {
ToAddresses: [
RECEIVER
]
},
Message: {
Body: {
Text: {
Data: 'name: ' + event.name + '\nphone: ' + event.phone + '\nemail: ' + event.email + '\nnote: ' + event.note,
Charset: 'UTF-8'
}
},
Subject: {
Data: 'Website Contact Form: ' + event.name,
Charset: 'UTF-8'
}
},
Source: SENDER
};
ses.sendEmail(params, done);
}
从html方面看,当我运行脚本时,联系人表单会按预期工作(一封包含姓名、电子邮件和消息的电子邮件发送到我的收件箱),但ajax请求返回错误状态0HTTP错误:0
function submitToAPI(e) {
e.preventDefault();
var URL = "https://Restful API URL";
var name = /[A-Za-z]{1}[A-Za-z]/;
if (!name.test($("#name-input").val())) {
alert ("Name cannot be less than 2 characters");
return;
var email = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,6})?$/;
if (!email.test($("#email-input").val())) {
alert ("Please enter valid email address");
return;
}
var name = $("#name-input").val();
var email = $("#email-input").val();
var note= $("#note-input").val();
var data = {
name : name,
email : email,
note: note
};
$.ajax({
type: "POST",
url : "https://Restful API URL",
dataType: "json",
crossDomain: "true",
contentType: "application/json; charset=utf-8",
data: JSON.stringify(data),
success: function () {
alert("Thank you!");
document.getElementById("contact-form").reset();
location.reload();
},
error: function (response) {
alert("HTTP Error: " + response.status);
document.getElementById("contact-form").reset();
location.reload();
}});
}
我在这里搜索了论坛,并尝试删除
数据类型:“json”
,还检查了CORS是否已启用。两人都没修好。我卡住了。谁能给我指出正确的方向吗 在我看来,您正在告诉lambda在回调中返回null
。您可以返回您的响应变量:
exports.handler = function (event, context) {
console.log('Received event:', event);
sendEmail(event, function (err, data) {
context.done(err, response); // <--- change null to response
});
};
exports.handler=函数(事件、上下文){
console.log('Received event:',event);
发送电子邮件(事件、功能(错误、数据){
context.done(err,response);//好眼力。我做了更改,现在它返回{“isBase64Encoded”:false,“headers”:{“Content Type”:“application/json”,“Access Control Allow Origin”:“example.com”},“statusCode”:200,“body”:“{“result\”:“Success.\”}
但是html/jquery实现仍然返回http状态0,即使表单正常工作。您的ajax请求是否有错误?如果有,是什么?您得到的响应是什么?是的,ajax请求返回http错误:0除了您所说的回答之外,还值得检查这些回答中的其他点谢谢你的提问。我会仔细看看。谢谢你的帮助。