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)
当我运行它时它会发出警报.请求帮助.
谢谢〜
因此,看来您可能有几个问题。一,避免使用“名称”作为变量名称。第二,数据可能未正确解析。发送时需要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)
| 归档时间: |
|
| 查看次数: |
9414 次 |
| 最近记录: |