Struts2 jQuery 实现无刷新验证
在注册时我们需要验证用户所输信息的正确性,如果待用户提交表单一次性验证,体验不是很好
所有我们可以利用jQuery实时验证,很多网站都有这个功能,这里我们也简单的来实现一下。
以验证用户名为例,可以这样实现:当用户名的输入框失去焦点时,利用jQuery的post方法通过HTTP POST 将用户名以JSON格式传向服务端,服务端接收数据判断后以JSON格式传给jQuery的回调函数即可,很简单的。
首先在注册页面申明username失去焦点调用的函数:
HTML代码
<input name="username" id="username" onblur="checkUername()" />
JS代码
function checkUername(){
document.getElementById("loading").style.display= "block";
var url = "checkUsernameAction";
var username = $.trim($("#username").val());
var json_username = {
username : username
}; //JSON object
if (username == "")
{
document.getElementById("loading").style.display= "none";
document.getElementById("username_notice").style.display= "block";
document.getElementById("username_notice").innerHTML="请输入用户名";
}else{
$.post( url ,json_username , callback , "json" );
function callback(json){
//解析json
var json_object =eval("("+json+")");
var suc = json_object.suc;
var msg = json_object.msg;
document.getElementById("loading").style.display= "none";
if(suc==0 ){
document.getElementById("username_notice").style.display= "block";
document.getElementById("username_notice").innerHTML=msg;
}
if(suc== 1){
document.getElementById("username_notice").style.display= "block";
document.getElementById("username_notice").innerHTML=msg;
}
}
}
}
上面代码,我简单处理了一下页面效果:post前,将一个loading的转啊转转啊的图片显示,待服务端返回数据后再隐藏,并将服务端的消息显示处理。
服务端需要引入和JSON有关的jar包。
action的代码如下
public String checkUsername(){
if (userService.findUsername(username)) {
result = "{suc:1, msg:'已经存在!'}";
return SUCCESS;
} else {
result = "{suc:0, msg:'可以注册...'}";
return SUCCESS;
}
}
Action代码没什么可看,别忘记getter和setter就可以了,userService由Spring注入,用来实现逻辑判断,还要注意这个result字段,这里就不上代码了。
配置struts.xml
在配置struts.xml时,package需要继承json-defaul,而不是平常的struts-default,如下:
<package name="user-common-json" extends="json-default">
<action name="checkUsernameAction" class="registAction" method="checkUsername">
<result type="json">
<param name="root">result</param>
</result>
</action>
</package>
到此,一个简单的Struts和jQuery无刷新验证用户例子就完成了,效果如下:
yilee于阳光缘林
5:00 12/04