2012-01-10 59 views
1

在按键后,我有来自客户端的Ajax请求。该servlet返回一个字符串。我应该如何从servlet获取Ajax响应?

应该如何我抢客户端上的这串?它应该在客户端的","上拆分并显示列表。我们正在使用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(); 
} 
+0

从Ajax查询的结果?这取决于你如何提出请求(希望不要使用原始JavaScript)。 – 2012-01-10 16:28:57

+0

@dave Newton从ui发送的请求是一个简单的字符串,如'li',我没有构建任何查询。您是什么意思的原始Javascript? – pushya 2012-01-10 16:32:46

+0

@DaveNewton我们在前端使用jQuery – pushya 2012-01-10 16:33:54

回答

2

不要使用“async:false”,否则会失去所有的AJAX含义。 在成功的方法中做所有你想要的东西。要通过拆分“”,只需使用分裂(),并轻松地重复阵列使用$。每()

$.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

听起来像一个简单的jQuery Ajax响应的情况 - 你不能处理好与顺乎自然的代码的响应?

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

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

是的,我可以。谢谢 – pushya 2012-01-10 16:47:35

+0

@pushya请注意,这段代码很可能不是你想要的,因为它是异步的,而不是规范的Ajax/jQuery模式。以此为例会滋生坏习惯。 – 2012-01-10 17:03:59

+0

@DaveNewton:你可能是想说“因为它是同步的”? – BalusC 2012-01-10 17:24:19

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>