我刚刚学习ajax,随便试了下,发现好多疑惑。环境:struts2.2.3+jquery
Action类
- Java code
public class AjaxAction extends ActionSupport{ private User user; private User user2; private String username; @Override public String execute() throws Exception { user = new User(); user.setUsername(username); user.setId(1); user.setPassword("aaaa1"); user2 = new User(); user2.setId(2); user2.setPassword("22222222222"); user2.setUsername("222"); return SUCCESS; }和get、set方法
struts.xml
- XML code
<result type="json" name="success"></result>
在js里面
- JScript code
function clickButton() { var url = "<%=basePath%>ajax/ajax"; var params = { username:$("#name").val() }; $.post(url, params, callbackFun, "json"); } function callbackFun(data) { alert(data); //1 //alert(data.user.id); //2 //alert(data.id+";"+data.username+";"+data.password); //3 }
不管我怎么改,注释1都弹出[object Object]
注释2是直接错误
注释3是data.id和data.password都是underfind。data.username值正常
假如,我的action类改为
- Java code
public class AjaxAction extends ActionSupport implements ModelDriven<User>{ private User user= new User(); @Override public String execute() throws Exception { user.setId(1); user.setPassword("aaaa1"); return SUCCESS; } @Override public User getModel() { return user; }和get、set方法
注释1还是[object Object]
注释2是直接错误
注释3却是正确的显示了。。
这是怎么回事?还是我的代码有什么问题?
------解决方案--------------------------------------------------------
function callbackFun(data){
for(var x in data){
alert( data[x] ); // 看看弹什么
}
}
------解决方案--------------------------------------------------------
- JScript code
function callbackFun(data){ for(var x in data){ if( typeof data[x] == 'object' ){ for(var y in data[x]){ alert(data[x][y]) } }else{ alert(data[x]) } }}