ajax通過xml互動資料
阿新 • • 發佈:2019-02-16
頁面程式碼:
script type="text/javascript"> function sendXML(){ //獲取引數 var name = document.getElementById("nm").value; var pwd = document.getElementById("pwd").value; var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest(); }else{ xhr = new ActiveXObject("Microsoft.XMLHttp"); } var url = "<c:url value='/AjaxOneServlet' />"; xhr.open("POST",url,true); xhr.onreadystatechange = function(){ if(xhr.readyState==4){ if(xhr.status==200){ //接收後臺xml格式資料 var xmlDomObj = xhr.responseXML; var users = xmlDomObj.getElementsByTagName("user"); for(var i=0;i<users.length;i++){ var id = users[i].getAttribute("id"); var name = users[i].childNodes[0].firstChild.data; var age = users[i].childNodes[1].firstChild.data; alert(id+","+name+","+age); } } } } //向後臺傳送xml格式資料 var xml = "<user><name>"+name+"</name><pwd>"+pwd+"</pwd></user>"; xhr.setRequestHeader("ContentType","application/x-www-form-urlencoded"); xhr.send(xml); } </script>
後臺程式碼:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("utf-8"); InputStream in = request.getInputStream(); //注意,轉換流要指定編碼,否則會出現亂碼 BufferedReader br = new BufferedReader(new InputStreamReader(in,"utf-8")); String line = ""; StringBuilder sb = new StringBuilder(); while((line=br.readLine())!=null){ sb.append(line); } String str = sb.toString(); System.out.println(str); SAXReader sax = new SAXReader(); try { Document dom = sax.read(new StringReader(str)); Element root = dom.getRootElement(); String name = root.elementText("name"); String pwd = root.elementText("pwd"); System.out.println(name+","+pwd); List<User>users = new ArrayList<User>(); users.add(new User("U001","Jack",22)); users.add(new User("U002","張三",24)); users.add(new User("U003","李四",27)); StringBuilder sb2 = new StringBuilder("<users>"); for(User u:users){ sb2.append("<user id=\""+u.getId()+"\"><name>"+u.getName()+"</name><age>"+u.getAge()+"</age></user>"); } sb2.append("</users>"); response.setContentType("text/xml;charset=utf-8"); PrintWriter pw = response.getWriter(); pw.println(sb2.toString()); } catch (DocumentException e) { e.printStackTrace(); } }