AWS API网关Lambda函数适用于Postman,但不适用于jquery

问题描述:

我有一个lambda(节点)函数,当我使用邮递员调用它时可以正常工作,但不是当我使用jquery $.ajax时。AWS API网关Lambda函数适用于Postman,但不适用于jquery

该函数正在使用javascript/jquery从本地html页面调用。

我有'Allow-Control-Allow-Origin'chrome插件启用。

该请求使用possman和jQuery传递相同的json对象。

{ 
    "deviceid" : "ZZ-5A-04-A6-XX-YY" 
} 

我尝试了以下网关请求映射模板。

  1. $input.json('$')

    当我登录偶数节点对象我看到以下行

    deviceid=ZZ-5A-04-A6-XX-YY 
    
  2. $input.body

    我得到的错误:

    Could not parse request body into json: Unrecognized token

+2

你的jQuery.ajax请求是什么样的?你传递一个'Content-Type:application/json'头文件吗? – fubar

+0

如何使用Lambda Proxy集成?它更简单。切换不会立即解决您的问题,但它会更容易维护和排除故障。 – dashmug

+0

var hardobj = { \t \t“deviceid”:“ADKNDND” \t}; \t $就({ \t类型: 'POST', \t网址:API_URL, \t数据:hardobj, \t数据类型: 'JSON', \t标头:{ \t \t“访问控制 - 允许 - 'Origin':'*', 'Access-Control-Allow-Headers':'内容类型,X-Amz-Date,授权,X-Api-Key,X-Amz-Security-Token', 'Access- Control-Allow-Credentials':true, 'Content-Type':'application/json' \t}, \t crossDomain:true, \t success:function(data){getdatasuccess(data)}, \t error:function(data){ \t console.log(“error =”+ JSON.stringify(data)); \t} \t}); – user2324723

终于解决了。 除了使用chrome允许交叉原点插件外,当使用jquery ajax时,数据对象需要作为字符串发送。

数据:JSON.stringify(hardobj)

希望别人没有一个星期浪费试图找出这一个。