日期:2014-05-18  浏览次数:20739 次

Struts、jQuery和Ajax提交数据的一个小问题
新手实验jQuery+JSON实现Ajax时遇到的问题,求诸位前辈指点迷津!

网页代码:

<body>
<div id="demo">
wow! jQuery.<br/>
</div>
用户名:<input type="text" id="userName"/><br/>
密码:<input type="password" id="passWord"/><br/>
<input type="button" value="ajax" id="btn"/>
</body>


javascript代码:

$(document).ready(function(){
$("#btn").bind("click",function(){
var params={"user.userName":$("#userName").val(),"user.passWord":$("#passWord").val()};
$.ajax({
url:"../action/ajax",
data:params,
type:"post",
dataType:"json",
success:function(data){
//alert(data.toJSONString());
if(data.user!=null){
alert("登录成功!");
}else{
alert("登录失败!");
}
}
})
})
});


struts.xml配置:

    <package name="ajax" namespace="/action" extends="json-default">
     <action name="ajax" class="com.action.AjaxAction">
     <result name="ajax" type="json">
     <param name="includeProperties">
     user.*
     </param>
     </result>
     </action>
    </package>


Action内容:

public class AjaxAction extends ActionSupport {

private User user;  //User对象就俩属性:userName和passWord,都是String类型
private String toJSONString;  //请注意这个属性,我的问题就是关于它的

public String execute(){

System.out.println(this.toJSONString);  //请注意这一句,呆会我会粘出他的显示结果

if(!user.getUserName().equals("admin") || !user.getPassWord().equals("admin")){
user=null;
}
return "ajax";
}
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
public String getToJSONString() {
return toJSONString;
}
public void setToJSONString(String toJSONString) {
this.toJSONString = toJSONString;
}
}




现在开始说问题,我要实现的功能就是在页面输入用户名密码,按按钮之后,通过jQuery得到用户名、密码,然后通过Ajax发送到Action里,判断用户名、密码是否正确,然后返回User对象。这个功能我确实已经实现了。但是有个小问题,请注意我Action里的那个toJSONString属性,一开始我代码里没有他,但是如果没有他的话,执行程序的时候,虽然也能实现我的功能,但是后台总抛异常,提示我说没有这个toJSONString的set方法。不得已我只能创建一个toJSONString属性,并写出他的get、set方法。出于好奇,我在控制台打印了一下这个toJSONString属性的内容,打印结果如下: