我一直在寻找这个问题的答案,但我找到的答案都没有帮助解决这个问题:
通过jQuery的HTTP Post不会返回任何数据。
以下是javascript代码:
$.post(
<ENDPOINT_URL>,
<XYZ DATA SENT>,
function(data){
//THIS IS THE PROBLEM HERE
},
"json")
.fail(function(jqXHR, textStatus, errorThrown){
alert(textStatus);
});
这会调用我的端点API Url,返回代码200和JSON响应正文:
{message: "XYZ"}
所以这就是我迄今所做的:
我希望能够收到该回复并处理消息&#34; XYZ&#34;。
感谢大家的帮助,非常感谢。
我遵循的教程/文章:
https://api.jquery.com/jquery.post/
答案 0 :(得分:1)
全部,非常感谢您的所有反馈 - 问题现在已经解决了。 @Austin French,在审核了服务器端和客户端javascript的完整方法后,我意识到问题与标题有关。
我很抱歉没有进一步扩展我的问题并提供更多详细信息:我使用Amazon AWS API Gateway处理后端Lambda函数,客户端调用函数,函数执行作业并返回JSON:< / p>
{"message":"xyz"}
我没有在客户端使用jQuery $ .post收到此消息。问题归结为AWS API Gateway如何处理请求并返回响应。
我需要将以下标题包含在我的Lambda函数响应中:
"Access-Control-Allow-Origin" : "*"
以下是服务器端响应的完整代码:
//Response
let responseCode = 200;
var responseBody = {
message: responseMessage
};
var response = {
statusCode: responseCode,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify(responseBody)
};
现在在客户端,我的原始函数(数据){...}接收响应并能够正确处理它,不会触发任何错误。客户端响应处理程序:
function(data){
alert(JSON.stringify(data));
}
再次感谢大家的帮助!
答案 1 :(得分:0)
请尝试以下操作:
$.post(
ENDPOINT_URL,
myData,
function(data) {
var response = jQuery.parseJSON(data);
console.log(response);
}
);
答案 2 :(得分:0)
这是我通常使用它的方式。它发送数据就好像以html格式发送并接收json响应。
var value1, value2;
$.ajax({
type: "POST",
url: url,
data: {"property1" : value1, "property2" : value2},
success: function(result, status, xhr){
<here you can process the json you get as response in result}
},
error: function(xhr, status, theError){
<here process if ajax fails>
},
dataType: "json"
});
答案 3 :(得分:0)
一些不符合评论的事情:
我更喜欢这种AJAX格式:
var myUrl = $(selector).val();
$.post( myUrl, { name: "John", time: "2pm" })
.fail(function (data) { /* code for failure */ }),
.done(function( data ) {
alert( "Data Loaded: " + data );
});
要查看服务器返回的内容,最简单的方法是使用Chrome的调试器:
转到网络选项卡,选择调用方法,然后在右侧子窗格中选择响应。您不仅应该看到响应代码,还要看到返回的完整内容。
另外几点说明:
一旦AJAX完成,.Done将调用该函数。
根据Jquery版本,您可能没有.done而是.success,反之亦然。