【发布时间】:2016-12-14 23:26:26
【问题描述】:
我在这里测试代码: http://www.w3schools.com/jquery/tryit.asp?filename=tryjquery_ajax_get
代码如下:
<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<script>
$(document).ready(function(){
var processJSON = function(data, textStatus, xhr) {
alert(xhr.status);
}
// for whatever reason, the following URL is not working any more, so you won't be able to test it anymore.
var myURL='https://ckeqt3eoea.execute-api.us-east-1.amazonaws.com/pettest/test?name=223';
// var myURL="https://jsonplaceholder.typicode.com/users"
$("button").click(function(){
$.ajax({
url: myURL,
dataType: "json",
contentType: 'application/json',
success: processJSON
});
});
});
</script>
</head>
<body>
<button>Send Request</button>
</body>
</html>
如代码所示,我正在尝试解析来自此 URL 的响应: https://ckeqt3eoea.execute-api.us-east-1.amazonaws.com/pettest/test?name=223
你可以直接去那个网址,发现AWS-API-Gateway的回复很简单:
{
"cc":"dd",
"name":"ee"
}
我能够使用上面的 javascript 来解析来自其他来源的其他 json 响应。但我正在努力解析来自AWS-API-Gateway 的上述回复。
如果您取消注释 var myURL 的第二行,您将看到该代码确实适用于其他 URL。
==========
针对现有答案:
- 我尝试了
json和jsonp。两者都适用于其他 URL(包括我评论的那个)。但两者都不适用于 AWS Gateway API。 - 我还更新了代码以使用命名函数。但同样,它适用于其他 URL,但不适用于 AWS URL。
- 我在 Firefox 和 Safari 上对其进行了测试。
【问题讨论】:
-
您的 API 当前可能未配置为支持 CORS,这可以解释为什么直接点击 URL 会将 JSON 打印到浏览器,但从另一个客户端应用程序向服务器发出请求会拒绝您的请求这意味着您在 Data 对象中一无所获。在 AWS 中确保您将 API 设置为接受 CORS
标签: javascript json ajax aws-lambda aws-api-gateway