`

Struts2+jQuery+JSON实现异步交互

阅读更多

Struts2+JQuery+JSON实现异步交互,包括从后台获得单个值、对象、List和Map数据并从前台的表达中获取值把值进行序列化通过JQuery的$.ajax({})传到后台和后台的对象进行绑定。

第一步:在MyEclipse中创建JavaWeb工厂并把Struts2 和 json的jar包添加到工程中添加完成后的工程图是:

 

第二步:创建后台:

  1. UserInfo实体类:

 

Userinfo实体类代码 复制代码
  1. package struts2jsonjquery.test.entity;   
  2.   
  3. import java.io.Serializable;   
  4. /**   
  5.  * <p>   
  6.  *  用户实体类   
  7.  * </p>   
  8.  * @author 朱延伟   
  9.  *   
  10.  */   
  11. public class UserInfo implements Serializable {   
  12.   
  13.     private static final long serialVersionUID = 3952189513312630860L;   
  14.        
  15.     private int userId;   
  16.     private String userName;   
  17.     private String password;   
  18.     public int getUserId() {   
  19.         return userId;   
  20.     }   
  21.     public void setUserId(int userId) {   
  22.         this.userId = userId;   
  23.     }   
  24.     public String getUserName() {   
  25.         return userName;   
  26.     }   
  27.     public void setUserName(String userName) {   
  28.         this.userName = userName;   
  29.     }   
  30.     public String getPassword() {   
  31.         return password;   
  32.     }   
  33.     public void setPassword(String password) {   
  34.         this.password = password;   
  35.     }   
  36. }  
package struts2jsonjquery.test.entity;

import java.io.Serializable;
/**
 * <p>
 * 	用户实体类
 * </p>
 * @author 朱延伟
 *
 */
public class UserInfo implements Serializable {

	private static final long serialVersionUID = 3952189513312630860L;
	
	private int userId;
	private String userName;
	private String password;
	public int getUserId() {
		return userId;
	}
	public void setUserId(int userId) {
		this.userId = userId;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
}

 

2. Action类

Action类代码 复制代码
  1. package struts2jsonjquery.test.action;   
  2.   
  3. import java.util.ArrayList;   
  4. import java.util.HashMap;   
  5. import java.util.List;   
  6. import java.util.Map;   
  7.   
  8. import struts2jsonjquery.test.entity.UserInfo;   
  9.   
  10. import com.opensymphony.xwork2.ActionSupport;   
  11.   
  12. public class JsonJqueryStruts2Action extends ActionSupport {   
  13.   
  14.     private static final long serialVersionUID = 3518833679938898354L;   
  15.        
  16.     private String message;     //使用json返回单个值   
  17.     private UserInfo userInfo;      //使用json返回对象   
  18.     private List<UserInfo> userInfosList;     //使用josn返回List对象   
  19.     private Map<String,UserInfo> userInfosMap;    //使用json返回Map对象   
  20.     //为上面的的属性提供get,Set方法   
  21.     public String getMessage() {   
  22.         return message;   
  23.     }   
  24.     public void setMessage(String message) {   
  25.         this.message = message;   
  26.     }   
  27.     public UserInfo getUserInfo() {   
  28.         return userInfo;   
  29.     }   
  30.     public void setUserInfo(UserInfo userInfo) {   
  31.         this.userInfo = userInfo;   
  32.     }   
  33.     public List<UserInfo> getUserInfosList() {   
  34.         return userInfosList;   
  35.     }   
  36.     public void setUserInfosList(List<UserInfo> userInfosList) {   
  37.         this.userInfosList = userInfosList;   
  38.     }   
  39.     public Map<String, UserInfo> getUserInfosMap() {   
  40.         return userInfosMap;   
  41.     }   
  42.     public void setUserInfosMap(Map<String, UserInfo> userInfosMap) {   
  43.         this.userInfosMap = userInfosMap;   
  44.     }   
  45.     /**   
  46.      * <p>   
  47.      *  返回单个值   
  48.      * <p>   
  49.      * @return   
  50.      */   
  51.     public String returnMessage(){   
  52.         this.message = "成功返回单个值";   
  53.         return "message";   
  54.     }   
  55.     /**   
  56.      * <p>   
  57.      *  返回UserInfo对象   
  58.      * </p>   
  59.      * @return   
  60.      */   
  61.     public String returnUserInfo(){   
  62.         userInfo = new UserInfo();   
  63.         userInfo.setUserId(10000);   
  64.         userInfo.setUserName("张三");   
  65.         userInfo.setPassword("000000");   
  66.         return "userInfo";   
  67.     }   
  68.     /**   
  69.      * <p>   
  70.      *  返回List对象   
  71.      * </p>   
  72.      * @return   
  73.      */   
  74.     public String returnList(){   
  75.         userInfosList = new ArrayList<UserInfo>();   
  76.         UserInfo u1 = new UserInfo();   
  77.         u1.setUserId(10000);   
  78.         u1.setUserName("张三");   
  79.         u1.setPassword("000000");   
  80.         UserInfo u2 = new UserInfo();   
  81.         u2.setUserId(10001);   
  82.         u2.setUserName("李四");   
  83.         u2.setPassword("111111");   
  84.         UserInfo u3 = new UserInfo();   
  85.         u3.setUserId(10002);   
  86.         u3.setUserName("王五");   
  87.         u3.setPassword("222222");   
  88.         UserInfo u4 = new UserInfo();   
  89.         u4.setUserId(10003);   
  90.         u4.setUserName("赵六");   
  91.         u4.setPassword("333333");   
  92.         userInfosList.add(u1);   
  93.         userInfosList.add(u2);   
  94.         userInfosList.add(u3);   
  95.         userInfosList.add(u4);   
  96.         return "list";   
  97.     }   
  98.     /**   
  99.      * <p>   
  100.      *  返回Map对象   
  101.      * </p>   
  102.      * @return   
  103.      */   
  104.     public String returnMap(){   
  105.         userInfosMap = new HashMap<String,UserInfo>();   
  106.         UserInfo u1 = new UserInfo();   
  107.         u1.setUserId(10000);   
  108.         u1.setUserName("张三");   
  109.         u1.setPassword("000000");   
  110.         UserInfo u2 = new UserInfo();   
  111.         u2.setUserId(10001);   
  112.         u2.setUserName("李四");   
  113.         u2.setPassword("111111");   
  114.         UserInfo u3 = new UserInfo();   
  115.         u3.setUserId(10002);   
  116.         u3.setUserName("王五");   
  117.         u3.setPassword("222222");   
  118.         UserInfo u4 = new UserInfo();   
  119.         u4.setUserId(10003);   
  120.         u4.setUserName("赵六");   
  121.         u4.setPassword("333333");   
  122.         userInfosMap.put(u1.getUserId()+"", u1);   
  123.         userInfosMap.put(u2.getUserId()+"", u2);   
  124.         userInfosMap.put(u3.getUserId()+"", u3);   
  125.         userInfosMap.put(u4.getUserId()+"", u4);   
  126.         return "map";   
  127.     }   
  128.     /**   
  129.      * <p>   
  130.      *  获得对象,也就是通过表达获得对象(异步的)   
  131.      * </P>   
  132.      * @return   
  133.      */   
  134.     public String gainUserInfo(){   
  135.         System.out.println("用户ID:"+userInfo.getUserId());   
  136.         System.out.println("用户名:"+userInfo.getUserName());   
  137.         System.out.println("密码:"+userInfo.getPassword());   
  138.         return "userInfo";   
  139.     }   
  140.     /**   
  141.      * 获得单个值就不用写了和平常一样   
  142.      */   
  143. }  
package struts2jsonjquery.test.action;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import struts2jsonjquery.test.entity.UserInfo;

import com.opensymphony.xwork2.ActionSupport;

public class JsonJqueryStruts2Action extends ActionSupport {

	private static final long serialVersionUID = 3518833679938898354L;
	
	private String message;		//使用json返回单个值
	private UserInfo userInfo; 		//使用json返回对象
	private List<UserInfo> userInfosList;		//使用josn返回List对象
	private Map<String,UserInfo> userInfosMap; 	//使用json返回Map对象
	//为上面的的属性提供get,Set方法
	public String getMessage() {
		return message;
	}
	public void setMessage(String message) {
		this.message = message;
	}
	public UserInfo getUserInfo() {
		return userInfo;
	}
	public void setUserInfo(UserInfo userInfo) {
		this.userInfo = userInfo;
	}
	public List<UserInfo> getUserInfosList() {
		return userInfosList;
	}
	public void setUserInfosList(List<UserInfo> userInfosList) {
		this.userInfosList = userInfosList;
	}
	public Map<String, UserInfo> getUserInfosMap() {
		return userInfosMap;
	}
	public void setUserInfosMap(Map<String, UserInfo> userInfosMap) {
		this.userInfosMap = userInfosMap;
	}
	/**
	 * <p>
	 * 	返回单个值
	 * <p>
	 * @return
	 */
	public String returnMessage(){
		this.message = "成功返回单个值";
		return "message";
	}
	/**
	 * <p>
	 * 	返回UserInfo对象
	 * </p>
	 * @return
	 */
	public String returnUserInfo(){
		userInfo = new UserInfo();
		userInfo.setUserId(10000);
		userInfo.setUserName("张三");
		userInfo.setPassword("000000");
		return "userInfo";
	}
	/**
	 * <p>
	 * 	返回List对象
	 * </p>
	 * @return
	 */
	public String returnList(){
		userInfosList = new ArrayList<UserInfo>();
		UserInfo u1 = new UserInfo();
		u1.setUserId(10000);
		u1.setUserName("张三");
		u1.setPassword("000000");
		UserInfo u2 = new UserInfo();
		u2.setUserId(10001);
		u2.setUserName("李四");
		u2.setPassword("111111");
		UserInfo u3 = new UserInfo();
		u3.setUserId(10002);
		u3.setUserName("王五");
		u3.setPassword("222222");
		UserInfo u4 = new UserInfo();
		u4.setUserId(10003);
		u4.setUserName("赵六");
		u4.setPassword("333333");
		userInfosList.add(u1);
		userInfosList.add(u2);
		userInfosList.add(u3);
		userInfosList.add(u4);
		return "list";
	}
	/**
	 * <p>
	 * 	返回Map对象
	 * </p>
	 * @return
	 */
	public String returnMap(){
		userInfosMap = new HashMap<String,UserInfo>();
		UserInfo u1 = new UserInfo();
		u1.setUserId(10000);
		u1.setUserName("张三");
		u1.setPassword("000000");
		UserInfo u2 = new UserInfo();
		u2.setUserId(10001);
		u2.setUserName("李四");
		u2.setPassword("111111");
		UserInfo u3 = new UserInfo();
		u3.setUserId(10002);
		u3.setUserName("王五");
		u3.setPassword("222222");
		UserInfo u4 = new UserInfo();
		u4.setUserId(10003);
		u4.setUserName("赵六");
		u4.setPassword("333333");
		userInfosMap.put(u1.getUserId()+"", u1);
		userInfosMap.put(u2.getUserId()+"", u2);
		userInfosMap.put(u3.getUserId()+"", u3);
		userInfosMap.put(u4.getUserId()+"", u4);
		return "map";
	}
	/**
	 * <p>
	 * 	获得对象,也就是通过表达获得对象(异步的)
	 * </P>
	 * @return
	 */
	public String gainUserInfo(){
		System.out.println("用户ID:"+userInfo.getUserId());
		System.out.println("用户名:"+userInfo.getUserName());
		System.out.println("密码:"+userInfo.getPassword());
		return "userInfo";
	}
	/**
	 * 获得单个值就不用写了和平常一样
	 */
}

 

3.  struts.xml

 

Struts.xml代码 复制代码
  1. <?xml version="1.0" encoding="UTF-8" ?>   
  2. <!DOCTYPE struts PUBLIC   
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">   
  5.   
  6. <struts>   
  7.   
  8.     <package name="default" namespace="/" extends="json-default">   
  9.         <action name="jsontest" class="struts2jsonjquery.test.action.JsonJqueryStruts2Action">   
  10.             <!-- 返回单个值的result -->   
  11.             <result name="message" type="json"></result>   
  12.             <!-- 返回UserInfo对象的 -->   
  13.             <result name="userInfo" type="json"></result>   
  14.             <!-- 返回List对象的 -->   
  15.             <result name="list" type="json"></result>   
  16.             <!-- 返回Map对象的 -->   
  17.             <result name="map" type="json"></result>   
  18.         </action>   
  19.     </package>   
  20. </struts>  
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
    "http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

    <package name="default" namespace="/" extends="json-default">
    	<action name="jsontest" class="struts2jsonjquery.test.action.JsonJqueryStruts2Action">
    		<!-- 返回单个值的result -->
    		<result name="message" type="json"></result>
    		<!-- 返回UserInfo对象的 -->
    		<result name="userInfo" type="json"></result>
    		<!-- 返回List对象的 -->
    		<result name="list" type="json"></result>
    		<!-- 返回Map对象的 -->
    		<result name="map" type="json"></result>
    	</action>
    </package>
</struts>

 

前台:

1.  index.jsp

Html代码 复制代码
  1. <%@ page language="java" pageEncoding="GBK"%>  
  2. <%   
  3.     String path = request.getContextPath();   
  4. %>  
  5.   
  6. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  7. <html>  
  8.   <head>  
  9.        
  10.     <title>Struts2+JQuery+JSON</title>  
  11.     <meta http-equiv="pragma" content="no-cache">  
  12.     <meta http-equiv="cache-control" content="no-cache">  
  13.     <meta http-equiv="expires" content="0">       
  14.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  15.     <meta http-equiv="description" content="This is my page">  
  16.     <script type="text/javascript" src="<%=path %>/js/jquery.js"></script>  
  17.     <script type="text/javascript" src="<%=path %>/js/json.js"></script>  
  18.   </head>  
  19.      
  20.   <body>  
  21.     <input id="getMessage" type="button" value="获取单个值"/>&nbsp;&nbsp;   
  22.     <input id="getUserInfo" type="button" value="获取UserInfo对象"/>&nbsp;&nbsp;   
  23.     <input id="getList" type="button" value="获取List对象"/>&nbsp;&nbsp;   
  24.     <input id="getMap" type="button" value="获取Map对象"/>&nbsp;&nbsp;   
  25.     <br>  
  26.     <br>  
  27.     <br>  
  28.     <!-- 要显示信息的层 -->  
  29.     <div id="message"></div>  
  30.     <form>  
  31.         用户ID:<input name="userInfo.userId" type="text"/><br/>  
  32.         用户名:<input name="userInfo.userName" type="text"/><br/>  
  33.         密&nbsp;&nbsp;&nbsp;码:<input name="userInfo.password" type="text"/><br>  
  34.         <input id="regRe" type="button" value="注册"/>  
  35.     </form>  
  36.   </body>  
  37. </html>  
<%@ page language="java" pageEncoding="GBK"%>
<%
	String path = request.getContextPath();
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>Struts2+JQuery+JSON</title>
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<script type="text/javascript" src="<%=path %>/js/jquery.js"></script>
	<script type="text/javascript" src="<%=path %>/js/json.js"></script>
  </head>
  
  <body>
    <input id="getMessage" type="button" value="获取单个值"/>&nbsp;&nbsp;
    <input id="getUserInfo" type="button" value="获取UserInfo对象"/>&nbsp;&nbsp;
    <input id="getList" type="button" value="获取List对象"/>&nbsp;&nbsp;
    <input id="getMap" type="button" value="获取Map对象"/>&nbsp;&nbsp;
    <br>
    <br>
    <br>
    <!-- 要显示信息的层 -->
    <div id="message"></div>
    <form>
    	用户ID:<input name="userInfo.userId" type="text"/><br/>
    	用户名:<input name="userInfo.userName" type="text"/><br/>
    	密&nbsp;&nbsp;&nbsp;码:<input name="userInfo.password" type="text"/><br>
    	<input id="regRe" type="button" value="注册"/>
    </form>
  </body>
</html>

 

2. json.js

 

Js代码 复制代码
  1. //初始加载页面时   
  2. $(document).ready(function(){   
  3.  //为获取单个值的按钮注册鼠标单击事件   
  4.  $("#getMessage").click(function(){   
  5.   $.getJSON("jsontest!returnMessage.action",function(data){   
  6.    //通过.操作符可以从data.message中获得Action中message的值   
  7.    $("#message").html("<font color='red'>"+data.message+"</font>");   
  8.   });   
  9.  });   
  10.  //为获取UserInfo对象按钮添加鼠标单击事件   
  11.  $("#getUserInfo").click(function(){   
  12.   $.getJSON("jsontest!returnUserInfo.action",function(data){   
  13.    //清空显示层中的数据   
  14.    $("#message").html("");   
  15.    //为显示层添加获取到的数据   
  16.    //获取对象的数据用data.userInfo.属性   
  17.    $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")   
  18.           .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")   
  19.           .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")   
  20.   });   
  21.  });   
  22.  //为获取List对象按钮添加鼠标单击事件   
  23.  $("#getList").click(function(){   
  24.   $.getJSON("jsontest!returnList.action",function(data){   
  25.    //清空显示层中的数据   
  26.    $("#message").html("");   
  27.    //使用jQuery中的each(data,function(){});函数   
  28.    //从data.userInfosList获取UserInfo对象放入value之中   
  29.    $.each(data.userInfosList,function(i,value){   
  30.     $("#message").append("<div>第"+(i+1)+"个用户:</div>")   
  31.        .append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")   
  32.           .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")   
  33.           .append("<div><font color='red'>密码:"+value.password+"</font></div>");   
  34.    });   
  35.   });   
  36.  });   
  37.  //为获取Map对象按钮添加鼠标单击事件   
  38.  $("#getMap").click(function(){   
  39.   $.getJSON("jsontest!returnMap.action",function(data){   
  40.    //清空显示层中的数据   
  41.    $("#message").html("");   
  42.    //使用jQuery中的each(data,function(){});函数   
  43.    //从data.userInfosList获取UserInfo对象放入value之中   
  44.    //key值为Map的键值   
  45.    $.each(data.userInfosMap,function(key,value){   
  46.     $("#message").append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")   
  47.           .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")   
  48.           .append("<div><font color='red'>密码:"+value.password+"</font></div>");   
  49.    });   
  50.   });   
  51.  });   
  52.  //向服务器发送表达数据   
  53.  $("#regRe").click(function(){   
  54.   //把表单的数据进行序列化   
  55.   var params = $("form").serialize();   
  56.   //使用jQuery中的$.ajax({});Ajax方法   
  57.   $.ajax({   
  58.    url:"jsontest!gainUserInfo.action",   
  59.    type:"POST",   
  60.    data:params,   
  61.    dataType:"json",   
  62.    success:function(data){   
  63.     //清空显示层中的数据   
  64.    $("#message").html("");   
  65.    //为显示层添加获取到的数据   
  66.    //获取对象的数据用data.userInfo.属性   
  67.    $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")   
  68.           .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")   
  69.           .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")   
  70.    }   
  71.   });   
  72.  });   
  73. });  
//初始加载页面时
$(document).ready(function(){
 //为获取单个值的按钮注册鼠标单击事件
 $("#getMessage").click(function(){
  $.getJSON("jsontest!returnMessage.action",function(data){
   //通过.操作符可以从data.message中获得Action中message的值
   $("#message").html("<font color='red'>"+data.message+"</font>");
  });
 });
 //为获取UserInfo对象按钮添加鼠标单击事件
 $("#getUserInfo").click(function(){
  $.getJSON("jsontest!returnUserInfo.action",function(data){
   //清空显示层中的数据
   $("#message").html("");
   //为显示层添加获取到的数据
   //获取对象的数据用data.userInfo.属性
   $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")
          .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")
          .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")
  });
 });
 //为获取List对象按钮添加鼠标单击事件
 $("#getList").click(function(){
  $.getJSON("jsontest!returnList.action",function(data){
   //清空显示层中的数据
   $("#message").html("");
   //使用jQuery中的each(data,function(){});函数
   //从data.userInfosList获取UserInfo对象放入value之中
   $.each(data.userInfosList,function(i,value){
    $("#message").append("<div>第"+(i+1)+"个用户:</div>")
       .append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")
          .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")
          .append("<div><font color='red'>密码:"+value.password+"</font></div>");
   });
  });
 });
 //为获取Map对象按钮添加鼠标单击事件
 $("#getMap").click(function(){
  $.getJSON("jsontest!returnMap.action",function(data){
   //清空显示层中的数据
   $("#message").html("");
   //使用jQuery中的each(data,function(){});函数
   //从data.userInfosList获取UserInfo对象放入value之中
   //key值为Map的键值
   $.each(data.userInfosMap,function(key,value){
    $("#message").append("<div><font color='red'>用户ID:"+value.userId+"</font></div>")
          .append("<div><font color='red'>用户名:"+value.userName+"</font></div>")
          .append("<div><font color='red'>密码:"+value.password+"</font></div>");
   });
  });
 });
 //向服务器发送表达数据
 $("#regRe").click(function(){
  //把表单的数据进行序列化
  var params = $("form").serialize();
  //使用jQuery中的$.ajax({});Ajax方法
  $.ajax({
   url:"jsontest!gainUserInfo.action",
   type:"POST",
   data:params,
   dataType:"json",
   success:function(data){
    //清空显示层中的数据
   $("#message").html("");
   //为显示层添加获取到的数据
   //获取对象的数据用data.userInfo.属性
   $("#message").append("<div><font color='red'>用户ID:"+data.userInfo.userId+"</font></div>")
          .append("<div><font color='red'>用户名:"+data.userInfo.userName+"</font></div>")
          .append("<div><font color='red'>密码:"+data.userInfo.password+"</font></div>")
   }
  });
 });
});

 注意:JSON插件会把所有包含getter方法的属性都序列化到返回结果中,所以Action中的其他execute方法都不要把名

       字加get前缀。

可以下载工程文件

分享到:
评论
26 楼 wnczwl369 2013-05-20  
,good job!
25 楼 mukehua 2013-05-09  
24 楼 ge立海 2013-04-08  
如果想要传回的是字符串同时还有对象或者对象列表呢?
情景是这样的,比如一个用户登录,希望用ajax方式登录,通过action得到相关的登录message,同时如果判定登录成功得到一个list的对象比如说是courses,用于登录后的下一个页面进行显示。
这样要怎么实现呢
23 楼 dingruzheng 2013-03-21  
太感谢楼主了,正好要用呢,简洁明了,看了一目了然,谢谢。
22 楼 liujianwen2012 2012-12-22  
跟楼主学习了,谢谢。
21 楼 海漂大侠 2012-08-14  
感谢,这个帖子对我帮助很大。
20 楼 fmwind 2012-08-06  
19 楼 Dick.D 2012-08-06  
谢谢~~
18 楼 zeyonq 2012-06-27  
要命的资料,非常感谢。
17 楼 xq30397022 2012-04-18  
写的真是好,太全了,感谢楼主!
16 楼 thurchin 2012-04-01  
写的不错,支持 
15 楼 kingsmalltwo 2012-03-07  
感谢!!!已测试成功!!!
14 楼 415421979 2012-03-05  
   非常感谢!!!!
13 楼 aa331730417 2012-02-23  
虽然还没仔细看,但找了好久,这个最靠谱了,能用!我在研究一下,楼主辛苦了,好东西呀
12 楼 whoshaofeng 2012-01-05  
谢谢,尊敬你严谨的精神。
11 楼 jay61439476 2011-12-25  
今天跟着LZ的例子学习了下   受益匪浅


请教个问题, 使用
  $.ajax({ 
   url:"jsontest!gainUserInfo.action", 

$.getJSON("jsontest!returnMap.action",function(data){

有什么区别吗?

我模仿LZ的实例使用  $.ajax({ 
   url:"jsontest!gainUserInfo.action", 成功返回了

但是使用 $.getJSON("jsontest!returnMap.action",function(data){
返回一个list的时候在前台一直没有解析到数据…………


还有就是我的action不知道为什么总是会执行两次…… 一直没发现原因
10 楼 devcang 2011-12-02  
参考一下,分开的会,组合的还没独立搞过
9 楼 wangyj0898 2011-11-28  
很不错的文章,很有帮助。。。
8 楼 cyk0653 2011-11-03  
感谢 
7 楼 zzxstudynumber 2011-08-10  
为什么我的json.js文件放在其他文件夹里就不行,路径肯定没错的!

相关推荐

    struts2+ajax+jquery

    这圣思园张老师的一个上课演示文件,讲的是struts2+jquery+Ajax实现异步交互的简单例子。

    Struts2+JSON+jQuery实现异步交互数据时选择要序列化的属性(二使用XML配置方式)

    NULL 博文链接:https://zyw090111.iteye.com/blog/724574

    jquey配合josn实现两级菜单联动特效.rar

    jquey配合josn实现两级网页菜单代码,二级的菜单联动特效,Author : TongFei  格式可更改为横行 也行 只需修改样式即可,url:菜单数据josn文件路径

    SYPRO示例项目源码和EasyUI入门视频教程

    sshe示例程序(struts2+spring3+hibernate4+easyui)(Maven构建) easyui1.2.6整站文件.zip jquery1.7.2中文API修正版.chm jquery.easyui-1.2.5源码未压缩版.rar jquery-easyui-1.2.6.zip JQuery-esqyUI中文-1.2.5API....

    java开源包2

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包3

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包4

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包1

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包11

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包6

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包5

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包10

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包8

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包7

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包9

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    java开源包101

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    Java资源包01

    WebSocket4J 是一个用 Java 实现的 WebSocket 协议的类库,可使用 Java 来构建交互式 Web 应用。WebSocket4J 并未实现客户端通讯协议,所以不能用它来连接 WebSocket 服务器。 Struts验证码插件 JCaptcha4Struts2 ...

    JAVA上百实例源码以及开源项目源代码

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

    JAVA上百实例源码以及开源项目

    2个目标文件,FTP的目标是:(1)提高文件的共享性(计算机程序和/或数据),(2)鼓励间接地(通过程序)使用远程计算机,(3)保护用户因主机之间的文件存储系统导致的变化,(4)为了可靠和高效地传输,虽然用户...

Global site tag (gtag.js) - Google Analytics