Javascript Can';t从jQuery Post返回任何数据
我一直在寻找关于这个问题的答案,但我找到的答案都无助于解决这个问题: 通过jQuery的HTTP Post未返回任何数据 以下是javascript代码:Javascript Can';t从jQuery Post返回任何数据,javascript,jquery,html,rest,post,Javascript,Jquery,Html,Rest,Post,我一直在寻找关于这个问题的答案,但我找到的答案都无助于解决这个问题: 通过jQuery的HTTP Post未返回任何数据 以下是javascript代码: $.post( <ENDPOINT_URL>, <XYZ DATA SENT>, function(data){ //THIS IS THE PROBLEM HERE }, "json") .fail(function(jqXHR, textStatus
$.post(
<ENDPOINT_URL>,
<XYZ DATA SENT>,
function(data){
//THIS IS THE PROBLEM HERE
},
"json")
.fail(function(jqXHR, textStatus, errorThrown){
alert(textStatus);
});
以下是我到目前为止所做的:
$.post(
ENDPOINT_URL,
myData,
function(data) {
var response = jQuery.parseJSON(data);
console.log(response);
}
);
这是我通常使用它的方式。它发送数据就像以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"
});
var值1、值2;
$.ajax({
类型:“POST”,
url:url,
数据:{“property1”:value1,“property2”:value2},
成功:功能(结果、状态、xhr){
评论中有几点不合适:
对于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,反之亦然。All,非常感谢您的所有反馈-问题现在已经解决了。@Austin French,在查看了服务器端和客户端javascript的完整方法后,我意识到问题与头相关
我很抱歉没有进一步阐述我的问题并提供更多细节:我正在使用Amazon AWS API Gateway来处理后端Lambda函数,客户端调用该函数,该函数完成任务并返回JSON:
{"message":"xyz"}
我没有在客户端使用jQuery$.post收到此消息。问题在于AWS API网关如何处理请求并返回响应
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"
});
我需要在Lambda函数响应中包含以下标题:
//Response
let responseCode = 200;
var responseBody = {
message: responseMessage
};
var response = {
statusCode: responseCode,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify(responseBody)
};
以下是服务器端响应的完整代码:
//Response
let responseCode = 200;
var responseBody = {
message: responseMessage
};
var response = {
statusCode: responseCode,
headers: {
"Access-Control-Allow-Origin" : "*"
},
body: JSON.stringify(responseBody)
};
现在在客户端,我的原始函数(data){…}接收响应并能够正确处理它,不会触发任何错误。客户端响应处理程序:
function(data){
alert(JSON.stringify(data));
}
再次感谢大家的帮助!{message:“XYZ”}
不是有效的JSON-返回的正是这个吗?必须引用属性名,所以应该是{“message”:“XYZ”}
。您检查了
上的数据处理方式吗?是否存在有效的返回数据或任何错误?不起作用:(同样的问题仍然存在,没有从响应中获得任何信息,但在Chrome developer模式下,我确实看到响应是JSON ok。不起作用。这与我之前尝试的ajax代码几乎相同,但仍然无法获得任何信息。它确实调用了错误代码,因此很明显,响应中出现了错误,但当我发出警报时(错误)我什么也没有得到。如果执行了错误函数,则请求失败。请检查url,很明显,您是否与所指向的url有连接。还要检查开发人员控制台,查看是否报告了任何错误。如上所述,请求没有失败,我实际上得到了预期的响应(JSON响应和200状态代码)在Chrome的开发人员控制台中,没有报告错误。是的,正在触发错误函数,这表明响应存在问题。我将继续并发布完整的前端和后端日志。谢谢。我已经在Chrome中使用了它,我的状态代码是200,响应是{“message”:“xyz”}这是一个格式正确的JSON字符串。此外,我也使用了.done-before,仍然没有任何内容。@nukalov然后,您似乎得到了一个成功的POST响应和一个有效的JSON,所以请定义.done或.success事件来处理它。@我将在您的问题中用done发布完整的方法,并确认您的jQueryI的确切版本有趣。请更新您的标签,包括AWS或亚马逊网络服务,以便其他人可以找到类似的问题。并更新任何可能有帮助或证明有用的答案,即使只是为了让您朝着正确的方向前进