Jquery 如何使用ajax GET或POST方法将数据传递到Amazon lambda node.js函数
我有下面的node.js代码(如下所示): 但我不知道如何使用jQueryAjax方法将“name”参数传递给该代码。当我使用:Jquery 如何使用ajax GET或POST方法将数据传递到Amazon lambda node.js函数,jquery,node.js,ajax,amazon-web-services,aws-lambda,Jquery,Node.js,Ajax,Amazon Web Services,Aws Lambda,我有下面的node.js代码(如下所示): 但我不知道如何使用jQueryAjax方法将“name”参数传递给该代码。当我使用: curl -H "Content-Type: application/json" -X POST -d "{\"name\": \"PeterChan\"}" https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource 我可以得到结果: {"Hello":"User"} 但是如
curl -H "Content-Type: application/json" -X POST -d "{\"name\": \"PeterChan\"}" https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource
我可以得到结果:
{"Hello":"User"}
但是如何使用jqueryajax方法传递“name”变量呢
我编写的ajax代码:
var data = {"name":"bbbb"};
$.ajax({
type: "POST",
dataType: "json",
url:"https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource",
data: data,
//processData: false,
success: function(data) {
var text=JSON.stringify(data);
alert(text);
//console.log(data);
},error: function(data) {
alert("err");
}
});
当我运行它时,它会提醒一个错误。因此,您可能会遇到一些问题。第一,避免使用“name”作为变量名。第二,数据可能没有被正确解析。发送时需要JSON.Stringify(是的,您已经有了JSON,但很挑剔): 我还添加了crossDomain:true和contentType:'application/json' 在lambda函数中,要获取传入JSON中的键/值,只需使用event.whateverkey(在lambda控制台中使用测试事件时,请使键与发送的键匹配,以避免出现任何问题) ajax函数中的成功回调中的数据是从lambda函数返回的数据,因此我建议在lambda函数中对其进行JSON.stringing,而不是确保正确发送的成功:
context.done(null, JSON.stringify({"Hello":name}));
是的,这只是一个示例链接,在实际情况中,我使用的是我自己的api url。Thxy您需要确保您的url不会出现任何与服务器相关的错误。您应该避免使用“name”作为变量名,因为这是一个javascript关键字。非常感谢Katharine Osborne~在我的代码中添加了“JSON.stringify(data)”之后,它就可以工作了~还有一件事,我想问一下如何使用GET方法来实现它……例如,我想在浏览器中访问“”以获取结果。我不知道如何配置API网关来执行GET方法…谢谢你,很抱歉我的英语不好~我无法在注释中显示代码,但你需要创建一个单独的使用GET的lambda函数。您的ajax调用不需要传入任何数据(因此您不需要contentType、data或dataType,类型为“GET”。您可以询问另一个问题并在此处链接到它。
$.ajax({
url: 'https://mylambdafunctionurl/',
type: 'POST',
crossDomain: true,
contentType: 'application/json',
data: JSON.stringify(data),
dataType: 'json',
success: function(data) {
//success stuff. data here is the response, not your original data
},
error: function(xhr, ajaxOptions, thrownError) {
//error handling stuff
}
});
context.done(null, JSON.stringify({"Hello":name}));