我应该如何从servlet获得Ajax响应?

时间:2012-01-10 16:27:12

标签: java javascript jquery servlets

按键后我收到来自客户端的Ajax请求。 servlet返回一个字符串。

我应该如何在客户端获取此字符串?它应该在客户端的","上拆分并显示列表。我们使用Velocity来呈现HTML。

Servlet代码:

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    response.setContentType("text/html");
    PrintWriter out = response.getWriter();
    String acInfo = request.getQueryString();
    SomeDAO dao = new SomeDAO();
    ArrayList<String> results = dao.acResults(acInfo);
    StringBuilder sb = new StringBuilder();
    int count = 0;
    for (String acResult : results) {
        sb.append(acResult);
        count++;
        if (count == results.size()) {
            break;
        }
        sb.append(',');
    }
    out.println(sb);
    out.close();
}

3 个答案:

答案 0 :(得分:2)

不要使用“async:false”,否则它将失去所有AJAX含义。 在成功方法中做你想要的所有东西。要按','进行拆分,只需使用split()并使用$ .each()

轻松迭代数组
$.ajax({ type: "GET",   
     url: "/YourServletURL",   
     success : function(text)
     {
         var list = text.split(',');
         $.each(list, function(index, value) { 
          alert(index + ': ' + value); 
         });
         // This will show the values. Change "alert" for $('div#mydiv').html(value) or so
     }
});

答案 1 :(得分:0)

如果您没有使用Jquery,那么您可以使用以下内容:

<html>
<head>
<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","YOUR_SERVLET_RELATIVE_URL",true);
xmlhttp.send();
}
</script>
</head>
<body>

<h2>AJAX</h2>
<button type="button" onclick="loadXMLDoc()">Request data</button>
<div id="myDiv"></div>

</body>
</html>

答案 2 :(得分:-1)

听起来像一个简单的jQuery ajax响应场景 - 你不能用下面的代码来处理响应吗?

var responseText = '';
$.ajax({ type: "GET",   
         url: "/YourServletURL",   
         success : function(text)
         {
             responseText = text;
         }
});

//alert response or process it or display somewhere
alert(responseText);