jquery的ajax实现登录名的校验
第一步:引入插件包
第二步:在struts.xml中定义:
修改:
<package name="system" namespace="/system" extends="struts-default">
修改成
<package name="system" namespace="/system" extends="json-default">
在struts.xml中添加:
<result name="checkUser" type="json">
<!-- 表示message的值返回页面,不再是一个json的数据结果 -->
<param name="root">message</param>
<!-- 对象中的某个属性被json化 -->
<param name="includeProperties">message</param>
</result>
第三步:页面的写法
/**校验登录名是否出现重复*/
function checkUser(o){
//alert(o.value);//dom的写法
//alert($(o).val());//jquery的写法
var logonName = $(o).val();
//以登录名作为查询条件,查询该登录名是否在数据库表中存在记录
$.post("elecUserAction_checkUser.do",{"logonName":logonName},function(data){
//如果栈顶是模型驱动的对象,取值的时候应该使用data.message的方式
//如果栈顶是模型驱动的对象的某个属性,取值的时候应该使用data即可
if(data==1){
$("#check").html("<font color='red'>登录名不能为空</font>");
o.focus();
$("#BT_Submit").attr("disabled","none");
}
else if(data==2){
$("#check").html("<font color='red'>登录名已经存在</font>");
$(o)[0].focus();
$("#BT_Submit").attr("disabled","none");
}
else{
$("#check").html("<font color='green'>登录名可以使用</font>");
$("#BT_Submit").attr("disabled","");
}
});
}
第四步:在Action类的代码中定义:将String类型的message放置到栈顶:例如
public String checkUser(){
//1:获取页面传递的登录名,以登录名作为条件,查询用户表,返回message
String logonName = elecUser.getLogonName();
/**
* 如果message==1,说明登录名为空,此时不能执行保存
如果message==2,说明登录名在数据库表中已经存在记录(list.size()>0),此时不能执行保存
如果message==3,说明登录名在数据库表中不存在记录(list.size()==0),此时可以执行保存
*/
String message = elecUserService.checkUserByLogonName(logonName);
//将标识message的值放置到栈顶的对象,返回到页面上
elecUser.setMessage(message);
return "checkUser";
}
第五步:在Service类的代码中查询message标识的值
public String checkUserByLogonName(String logonName) {
String message = "";
if(StringUtils.isNotBlank(logonName)){
String condition = " and o.logonName=?";
Object [] params = {logonName};
//查询获取用户信息
List<ElecUser> list = elecUserDao. onditionNoPage(condition, params, null);
if(list!=null && list.size()>0){ findCollectionByC
message = "2";
}
else{
message = "3";
}
}
else{
message = "1";
}
return message;
}