2012-01-10 38 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>