【问题标题】:How to retrieve the data returned by an AJAX request如何检索 AJAX 请求返回的数据
【发布时间】:2016-04-26 13:32:13
【问题描述】:

我发出 AJAX 发布请求,以“数组”[value1, value2, value3,...,valueN] 的形式从 DB 获取处理后的数据,以便稍后在 chartJS 对象上使用它。

AJAX 请求:

$(document).ready($.post('callMeForAJAX.jsp', function(data){
    values = data;
    console.log(data);
}));

但即使我可以在 Chrome 的开发工具的“网络”选项卡上看到响应,它也不会在控制台上打印任何内容。

如何检索该数据(不超过一个字符串)以将其放在 Chart 对象的“数据”参数中?

callMeForAJAX.jsp:

<%@ page contentType="text/xml;charset=UTF-8"%>
<%

  String data = "[";
  for(String s : InfoFacade.getData()){
      data += s+", ";
  }
  data += "]";
  response.getWriter().write(data);

%>

编辑:如果相关,我使用的是 1.2.x jQuery lib,现在我已经升级到 2.x,没有任何更改。

【问题讨论】:

  • JavaScript 菜鸟在这里。温柔点:)
  • $(document).ready($.post()....); 错误

标签: javascript jquery ajax jsp http-post


【解决方案1】:

我们开始吧:

$.ajax({
                type: "POST",
                url: "/yourUrl",
                data: data,
                dataType: 'html',
                success: function (result) {

                        $("#yourIdContainerToShowResult").html(result);


                }
            });

希望对你有帮助;)

【讨论】:

  • 您的解决方案似乎按预期工作。您能否通过说明我尝试做事的方式有什么问题来纠正我的方法?另外:如何将该数据存储在 AJAX 请求之外的变量中?一旦我尝试在回调之外打印它,它就是未定义的。
  • @AndrésBuitrago 1. 你可以使用 $.ajax() 而不是 $.ajax()
  • 是的,我明白了。根据 jQuery 文档,这只是一种更短的方法,所以我决定使用这种方法。另一方面,你能帮我解决第二个关于如何将数据保存在全局变量中的小问题吗?这是一个 jsfiddle,所以你可以理解我想要做什么jsfiddle.net/zsjjcmjL。它一直说值是未定义的。
  • @AndrésBuitrago 我查看了您的代码,因此,通过这种方式,您将数据发布为 NULL ,因为您获得的值是 undefined ,首先您必须像这样序列化您的数据: var data = $ ("#yourOrderFormId").serialize();如果有帮助,请标记我的解决方案;)
  • 这段代码'$(document).ready(ajaxCall())'必须是这样的 $(document).ready(function(){ ajaxCall(); });
【解决方案2】:

您的 $(document).ready() 块不正确。 试试这个:

$(document).ready(function(){
    $.post('callMeForAJAX.jsp', function(data){
        values = data;
        console.log(data);
    })
});

【讨论】:

  • 哦,我明白了。我必须在那里使用匿名函数。但是,控制台中仍然没有显示任何内容。
  • 是的。我得到了正确的响应,但它不会在函数中做任何事情。
  • 什么是values?如果未定义,那么您可能会因此遇到问题。
  • 是AJAX请求外的js变量。变量值; (此处为 AJAX 请求)
【解决方案3】:

试试这个

$(函数(){

callMeForAJAX();

});

function callMeForAJAX(){
$.post( "callMeForAJAX.jsp", function(data){
 if(data.length > 0)
 console.log(data);
 else
 console.log("DATA NULL");  
});
}

【讨论】:

  • 它不会在控制台上打印任何东西。
  • 检查是否(data.length >0)
  • 它不打印任何消息。
猜你喜欢
  • 2016-12-02
  • 1970-01-01
  • 2021-07-18
  • 2021-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多