您的位置:首页 > Web前端 > JQuery

struts2 + spring +jquery实现AJAX (使用了struts2 的json插件)

2011-09-15 23:09 926 查看
涉及到的json包(常规的环境jar包就不提了):

1.json-lib-2.1-jdk15.jar

2.struts2-json-plugin-2.2.3.jar

3.ezmorph-1.0.3.jar

前台代码概要:

<a href="#" id="test_ajax">测试</a>

$("#test_ajax").click(function(){
$.ajax({
url:'login-testAjax.do',
data:'total=12&page=5',
type:'post',
success: function(json){
alert(json.userJson.userName); //获得对象属性的方

alert(json.total);//获得对象的方法

alert(JSON.stringify(json));

},
error:function(){
}
})
});


后台代码 :

public class LoginAction extends BaseAction {
private static final long serialVersionUID = 4131734738322791161L;
private int total=0;
private JSONObject userJson;
private ILoginService loginService;

public String testAjax(){
BasicUser user = loginService.getTestUser();
userJson = JSONObject.fromObject(user);
//BasicUser对象包括 userName password
return SUCCESS;
}
public void setUserJson(BasicUser userJson) {
this.userJson = JSONObject.fromObject(userJson);
}
public int getTotal() {
return total;
}
public void setTotal(int total) {
this.total = total;
}
public JSONObject getUserJson() {
return userJson;
}
public void setLoginService(ILoginService loginService) {
this.loginService = loginService;
}
}
这里有几点关键注意一下:
1.在返回的时候,json中包括所有的action中的有get方法的变量。因此,我们service方法不要写get方法。

2.在注意useJson对象的set方法

 如下写法,无法直接获得对象的

public void setUserJson(JSONObject userJson) {
this.userJson = userJson;
}

需要改成:

public void setUserJson(BasicUser userJson) {
this.userJson = JSONObject.fromObject(userJson);
}

至于理由,目前还没想太明白,知道朋友希望能补充一下。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息