如何使用ajax GET或POST方法将过去的数据转换为amazon lambda node.js函数

我是amazon web services的新用户。 最近我正在学习亚马逊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 }; 

但我不知道如何使用jquery ajax方法将“name”parameter passing给该代码。 它在我使用时工作:

 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”}

但我怎样才能使用jquery ajax方法来通过“名称”variables?

我写的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"); } }); 

当我运行它时,它提醒err。 请帮忙。

谢谢〜

所以看起来你可能有几个问题。 一,避免使用“名称”作为variables名称。 二,数据可能没有被正确parsing。 你发送它时需要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 } }); 

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

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

在你的ajax函数中的成功callback中的数据是从lambda函数返回的,所以我build议JSON.stringifying在lambda函数中,而不是成功,以确保它被正确发送:

 context.done(null, JSON.stringify({"Hello":name}));