关于Ajax中处理回传参数的几种实现
来源:互联网 发布:淘宝怎么卖酒 编辑:程序博客网 时间:2024/06/13 10:08
我的试验主要包括4种:
1.回传一个普通的String字符串.
2.回传一个组织好的Javascript字符串.
3.回传一个Json对象.(需要引入json.jar)
4.回传一个XML对象.
基本实现如下:
其中测试页面为:
001<%@page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
002<%request.setCharacterEncoding("UTF-8");%>
003<html>
004<head>
005<title>测试Ajax页面</title>006</head>
007<body>
008<table width="100%" height="100%" >
009<td align="center" valign="center" >
010<form action="" method="post" onsubmit="">
011<table border="3" >
012<tr>
013<td>
014<input name="试验返回String" type="button" value="试验返回String" onclick="testAjaxForString();" style="width:140px;">
015</td>
016</tr>
017<tr>
018<td>
019<input name="试验返回javascriptString" type="button" value="试验返回javascriptString" onclick="testAjaxForObject();" style="width:140px;">
020</td>
021</tr>
022<tr>
023<td>
024<input name="试验返回json" type="button" value="试验返回json" onclick="testAjaxForJson();" style="width:140px;">
025</td>
026</tr>
027<tr>
028<td>
029<input name="试验返回xml" type="button" value="试验返回xml" onclick="testAjaxForXml();" style="width:140px;">
030</td>
031</tr>
032</table>
033</form>
034</td>
035</table>
036</body>
037</html>
038039<script type="text/javascript">
040var xmlHttp ;041function createXmlHttpRequest(){042if(window.ActiveXObject){043xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") ;044}else if(window.XMLHttpRequest){045xmlHttp = new XMLHttpRequest();046}
047}
048/*返回String*/
049function testAjaxForString(){050createXmlHttpRequest();051var url = "HelloWorld?";052var queryString = "name=songwei";053url += queryString ;054// xmlHttp.onreadystatechange = parseHello ;//如果是异步,既open中最后一个参数为true.则打开该选项.
055xmlHttp.open("post",url,false);056xmlHttp.send(null);057alert(xmlHttp.responseText); //如果是字符串或者xml.058}
059060/*返回JsObject*/
061function testAjaxForObject(){062createXmlHttpRequest();063var url = "HelloWorldForObject?";064var queryString = "name=songwei";065url += queryString ;066// xmlHttp.onreadystatechange = parseHello ;
067xmlHttp.open("post",url,false);068xmlHttp.send(null);069alert(xmlHttp.responseText);070var o = eval(xmlHttp.responseText);071alert("username="+o.username);072alert("password="+o.password);073var farray = o.friend ;074var fname ="";075for(var i=0;i<farray.length;i++){076fname += farray[i]+" ";077}
078alert("friend list ="+fname);079}
080//返回Json
081function testAjaxForJson(){082createXmlHttpRequest();083var url = "HelloWorldForJson?";084var queryString = "name=songwei";085url += queryString ;086xmlHttp.open("post",url,false);087xmlHttp.send(null);088alert(xmlHttp.responseText);089var o = eval("(" + xmlHttp.responseText + ")");090alert(o.userInfo.username);091alert(o.userInfo.password);092alert(o.userInfo.friends[0]);093alert(o.userInfo.friends[1]);094}
095096//返回XML
097function testAjaxForXml(){098createXmlHttpRequest();099var url = "HelloWorldForXML?";100var queryString = "name=songwei";101url += queryString ;102xmlHttp.open("post",url,false);103xmlHttp.send(null);104alert(xmlHttp.responseXML);105alert ("tagName: " + xmlHttp.responseXML.documentElement.tagName);106var xmlDoc = xmlHttp.responseXML ;107var xmlRoot=xmlDoc.documentElement;108109var friendsItem=xmlRoot.getElementsByTagName("friends");110alert(friendsItem[0].firstChild.firstChild.data);111alert(friendsItem[0].firstChild.nextSibling.firstChild.data);112var usernameItem = xmlRoot.getElementsByTagName("username");113alert(usernameItem[0].firstChild.data);114115}
116</script>
对于各种回传方式的不同servlet实现:
1.普通字符串 ,HelloWorld.java(Servlet)
01public class HelloWorld extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {02public HelloWorld() {03super();04}
05protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {06doPost(request,response);07}
08protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {09// TODO Auto-generated method stub
10String name = request.getParameter("name");11String str = "Hello "+name ;12PrintWriter pw = response.getWriter();13pw.print(str);14pw.close();15}
16}
2.Javascript字符串Servlet实现
HelloWorldForObject.java
01public class HelloWorldForObject extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {02public HelloWorldForObject() {03super();04}
05protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {06doPost(request,response);07}
0809protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {10String name = request.getParameter("name");11User user = new User();12user.setUsername(name);13user.setPassword("abc");14List<String> friend = new ArrayList<String>();15friend.add("wangdong");16friend.add("zhaoyong");17user.setFriend(friend);18StringBuffer sb = new StringBuffer();19sb.append("var o = new Object();");20sb.append("o.username ='"+user.getUsername()+"' ;");21sb.append("o.password ='"+user.getPassword()+"' ;");22sb.append("o.friend = new Array(");23String tmp = "" ;24for(String s : user.getFriend()){25if(tmp.trim().length()<1){26tmp += "'"+s+"'" ;27}else{28tmp +="," ;29tmp += "'"+s+"'" ;30}
31}
32sb.append(tmp+") ;");33sb.append("o;");34PrintWriter pw = response.getWriter();35pw.print(sb.toString());36pw.close();37}
38}
3.JSon对象实现
HelloWorldForJson.java
01public class HelloWorldForJson extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {02public HelloWorldForJson() {03super();04}
05protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {06doPost(request,response);07}
08protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {09response.setCharacterEncoding("UTF-8");10response.setHeader("Cache-Control","no-cache");11request.setCharacterEncoding("UTF-8");12String result = new String();13String name = request.getParameter("name");14try{15JSONObject jsonResult = new JSONObject();16jsonResult.put("username",name);17jsonResult.put("password","password");18JSONArray jsonFriends = new JSONArray();19jsonFriends.put("张三");20jsonFriends.put("李四");21jsonResult.put("friends",jsonFriends);22result = new JSONObject().put("userInfo", jsonResult).toString();23}catch(JSONException jex){24jex.printStackTrace();25}
26response.getWriter().print(result);27response.getWriter().close();28}
29}
4.XML对象实现
HelloWorldForXML.java
01public class HelloWorldForXML extends javax.servlet.http.HttpServlet implements javax.servlet.Servlet {02public HelloWorldForXML() {03super();04}
05protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {06doPost(request,response);07}
08protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {09String name = request.getParameter("name");10Document doc = null ;11String docStr ="" ;12try{13DocumentBuilderFactory dbf =DocumentBuilderFactory.newInstance();14DocumentBuilder db = dbf.newDocumentBuilder();15doc = db.newDocument();16Element root = doc.createElement("userInfo");17doc.appendChild(root);18Element nameE = doc.createElement("username");19Text nameT = doc.createTextNode(name);20nameE.appendChild(nameT);21root.appendChild(nameE);2223Element passE = doc.createElement("password");24Text passT = doc.createTextNode("password");25passE.appendChild(passT);26root.appendChild(passE);2728Element friends = doc.createElement("friends");2930Element friend1 = doc.createElement("friend");31Text f1T = doc.createTextNode("张三");32friend1.appendChild(f1T);33Element friend2 = doc.createElement("friend");34Text f2T = doc.createTextNode("李四");35friend2.appendChild(f2T);3637friends.appendChild(friend1);38friends.appendChild(friend2);39root.appendChild(friends);4041ByteArrayOutputStream bstream = null;42try {43bstream = new ByteArrayOutputStream();44Transformer xformer = TransformerFactory.newInstance()45.newTransformer();46Source source = new DOMSource(doc);47Result result = new StreamResult(bstream);48xformer.transform(source, result);49} catch (Exception e) {50e.printStackTrace();51}
52try {53docStr = new String(bstream.toByteArray(), "UTF-8");54} catch (UnsupportedEncodingException e) {55e.printStackTrace();56docStr = new String(bstream.toByteArray());57}
58System.out.println(docStr);5960}catch(ParserConfigurationException ex){61ex.printStackTrace();62}
63response.setContentType("text/xml;charset=UTF-8");64PrintWriter writer = response.getWriter();65writer.print(docStr);66writer.flush();67writer.close();68}
本文固定链接: http://anyoneking.com/archives/97 | 懒散狂徒的博客
- 关于Ajax中处理回传参数的几种实现
- 关于Ajax中处理回传参数的几种实现
- 关于Ajax中处理回传参数的几种实现
- 关于Ajax中处理回传参数的几种实现
- dorado中获取参数据的几种实现
- ajax传参数到action中处理相应请求,以及过去的servlet处理请求
- 关于Struts2传参数的几种方法随笔
- 几种常见的ajax实现方法
- 几种ajax的使用及实现
- 几种框架的Ajax实现方法
- ASP.Net中实现Ajax的几种实现方法之AjaxPro的使用(一)
- SpringMVC中ajax传值的几种接收方式
- 关于scanf的几种处理方法
- 关于java中参数传递的几点疑惑
- C#中当参数为空时的几种处理
- 实现参数传值的几种方式
- 关于Jquery中ajax方法data参数用法的总结
- 关于Jquery中ajax方法data参数用法的总结
- linux spi 设备驱动简析 一(基于s5pv210)
- a++为什么不能做左值
- 一笔画问题
- 微博项目---项目介绍
- 开源数字媒体资产管理系统:Razuna安装方法
- 关于Ajax中处理回传参数的几种实现
- HttpClient
- sscanf函数的妙用
- UVa 1225 Digit Counting (枚举)
- Python中下划线---完全解读
- 读《高效能程序员的修炼》《EffectiveProgramming: More Than Writing Code》
- Windows 8.1下使用VC 6.0和Visual Assist X
- JSF —— 以编程方式访问用户界面组件
- 动态多维数组