1. 程式人生 > >ajax通過xml互動資料

ajax通過xml互動資料

頁面程式碼:

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();
		}
	}