我是亚马逊网络服务的新用户.最近我正在研究亚马逊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"参数传递给该代码.它在我使用时有效:
curl -H "Content-Type: application/json" -X POST -d "{\"name\": \"PeterChan\"}" https://my-api-id.execute-api.region-id.amazonaws.com/test/mydemoresource
我可以得到结果:{"你好":"用户"}
但是我如何使用jquery ajax方法来过去"name"变量?
我写的ajax代码:
{"Hello":"User"}
当我运行它时它会发出警报.请求帮助.
谢谢〜
因此,看来您可能有几个问题。一,避免使用“名称”作为变量名称。第二,数据可能未正确解析。发送时需要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控制台中使用test事件时,使键与您要发送的键匹配,以避免出现任何问题)。
ambx函数返回的成功回调中的数据是从lambda函数返回的数据,因此,我建议在lambda函数中使用JSON.stringifying该数据,而不是确保其正确发送的成功消息:
context.done(null, JSON.stringify({"Hello":name}));