Javascript Can';t从jQuery Post返回任何数据

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

我一直在寻找关于这个问题的答案,但我找到的答案都无助于解决这个问题:

通过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);
    });
以下是我到目前为止所做的:

  • 由于异步行为,我创建了一个函数来接收和处理数据输入。什么也没发生
  • 添加了。无法处理失败。根据一篇文章,我返回的JSON可能格式不正确,并将其放置。处理失败可能会让我知道发生了什么。。。是否有办法获取实际错误消息的详细信息
  • 验证了我的JSON。是格式不正确还是我没意识到
  • 将整个代码替换为$ajax。尽管如此,还是会出现同样的错误
  • 我希望能够接收该响应并处理消息“XYZ”

    谢谢大家的帮助,非常感谢

    我已阅读的教程/文章:

    尝试以下操作:

    $.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或亚马逊网络服务,以便其他人可以找到类似的问题。并更新任何可能有帮助或证明有用的答案,即使只是为了让您朝着正确的方向前进