如何使用ajax GET或POST方法将过去的数据发送到amazon lambda node.js函数

Tim*_*Lee 5 ajax jquery amazon-web-services node.js aws-lambda

我是亚马逊网络服务的新用户.最近我正在研究亚马逊lambda服务器,我有一个小node.js代码如下(以下示例:http://docs.aws.amazon.com/apigateway/latest/developerguide/getting-started.html):

console.log('Loading event');

exports.handler = function(event, context) {
var name = (event.name === undefined ? 'No-Name' : event.name);
context.done(null, {"Hello":name}); // SUCCESS with message
};
Run Code Online (Sandbox Code Playgroud)

但我不知道如何使用jquery ajax方法将"name"参数传递给该代码.它在我使用时有效:

curl -H "Content-Type: application/json" -X POST -d "{\"name\": \"PeterChan\"}" https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource
Run Code Online (Sandbox Code Playgroud)

我可以得到结果:{"你好":"用户"}

但是我如何使用jquery ajax方法来过去"name"变量?

我写的ajax代码:

{"Hello":"User"}
Run Code Online (Sandbox Code Playgroud)

当我运行它时它会发出警报.请求帮助.

谢谢〜

Kat*_*rne 5

因此,看来您可能有几个问题。一,避免使用“名称”作为变量名称。第二,数据可能未正确解析。发送时需要JSON.Stringify(是的,您已经有JSON,但这很挑剔):

$.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
    }
});
Run Code Online (Sandbox Code Playgroud)

我还添加了crossDomain:true和contentType:“ application / json”。

在lambda函数中获取传入的JSON中的键/值时,您只需使用event.whateverkey(在Lambda控制台中使用test事件时,使键与您要发送的键匹配,以避免出现任何问题)。

ambx函数返回的成功回调中的数据是从lambda函数返回的数据,因此,我建议在lambda函数中使用JSON.stringifying该数据,而不是确保其正确发送的成功消息:

context.done(null, JSON.stringify({"Hello":name}));
Run Code Online (Sandbox Code Playgroud)