首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Struts、jQuery和Ajax提交数据的一个小疑点

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

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属性的内容,打印结果如下:


{"onbeforeunload":null,"status":"","onmessage":null,"onblur":null,"onunload":null,"screenTop":114,"name":"","offscreenBuffering":"auto","onhashchange":null,"closed":false,"onload":null,"screenLeft":-2,"onscroll":null,"onafterprint":null,"maxConnectionsPerServer":10,"onresize":null,"length":0,"frameElement":null,"onerror":null,"onhelp":null,"onbeforeprint":null,"onfocus":null,"defaultStatus":""}
我并没有传过这个值啊,这个值是从哪蹦出来的?请各位前辈指教! Struts jQuery Ajax?Json
[解决办法]
你使用json传数据 当然需要有json格式的字符串啦
把你的User类重写toString方法 参考如下:   
 public String toString() {  
         //{'id':1,'name':'zhangsan','password':'123','age':1}  
        return "{'name':'"+name+"','password':'"+password+"'}";  
    }  

你参考着看一下我原来写的这个json分页
http://blog.csdn.net/qiyuexuelang/article/details/8848747
[解决办法]
type="json"   struts封装的json有toJSONString这个属性,所以会这样,改为别的名字就没事了。

热点排行