簡體   English   中英

我應該如何從Servlet獲取Ajax響應?

[英]How should I get the Ajax response from the servlet?

按鍵后,我有一個來自客戶端的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();
}

不要使用“ 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
     }
});

如果您不使用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>

聽起來像一個簡單的jQuery ajax響應方案-您不能使用以下性質的代碼處理響應嗎?

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM