jquery – 如何使用ajax GET或POST方法将数据传递给Amazon lambda node.js函数

前端之家收集整理的这篇文章主要介绍了jquery – 如何使用ajax GET或POST方法将数据传递给Amazon lambda node.js函数前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我在下面有node.js代码(在Getting Started with REST APIs in Amazon API Gateway之后):

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

我可以得到结果:

{"Hello":"User"}

但是如何使用jQuery ajax方法传递“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");
      }
});

它在我运行它时会发出错误警报.

最佳答案
所以看起来你可能会遇到一些问题.一,避免使用“名称”作为变量名.二,数据可能没有被正确解析.你发送它时需要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控制台中使用测试事件时,使键与您发送的内容匹配以避免任何问题).

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

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

猜你在找的jQuery相关文章