实战用户注册界面编程问题

文章目录

      • 1.两次密码不一致的代码编写
      • 2.表单提交不通过的
      • 3.sql语句
      • 4.ajax提交表单的一些注意事项:为什么return false却依然提交
      • 5.新的问题:我认为和ajax的运行流程有很大关系
      • 6.结果集处理器

1.两次密码不一致的代码编写

两次密码不一致的label出现在reloginpass中,但是如果只在reloginpass中校验,那么就会出现当先填好reloginpass,再去修改loginpass的情况下,label中的错误信息不显示,所以,需要在loginpass中也加上一致校验的代码,与reloginpass中只需要在不一致的时候显示错误信息不同(因为当前输入框获取焦点是,label中错误信息会被修改为空,所以如果校验正确,那就不显示错误信息),但是loginpass中,即使获取了焦点,也不能影响到reloginpass中label的显示,如果出现reloginpass中已经报错,再去修改loginpass是密码一致的情况,reloginpass中的报错信息没有得到修改,所以,在loginpass一致性检测中,需要1.当两次密码不一致时,使reloginpass中的label显示错误信息2.当两次密码一致时,使reloginpass中的label显示为空。

2.表单提交不通过的

在设置事件,提交表单时检验全部表单的代码中,发现即使全部表单正确也无法提交,原因是在在校验方法例如用户名校验中,除了第一项的非空校验可以使用return false,后面的长度校验只能使用false,而不能用return false,当所有校验成功,再return true

3.sql语句

按用户名查询数据库中是否存在
select count(1) from t_user where loginname = “zhangSan”
问题原因:

4.ajax提交表单的一些注意事项:为什么return false却依然提交

  1. ajax时return false 的function与onsubmit()不是同一个函数;
  2. 在ajax执行时,async默认的设置值为true,这种情况为异步方式,就是说当ajax发送请求后,在等待server端返回的这个过程中,前台会继续 执行ajax块后面的脚本,直到server端返回正确的结果才会去执行success,也就是说这时候执行的是两个线程,ajax块发出请求后一个线程 和ajax块后面的脚本(另一个线程)。
    原因:逻辑没弄清楚,要将ajax设置为同步的,需要使用 . a j a x , .ajax, .ajax.get默认是异步的,并且不是在回调函数内return,而是在CheckUserName函数中声明一个变量来接受回调函数的返回值,然后CheckUserName返回这个值。

var flag=false;

KaTeX parse error: Expected '}', got 'EOF' at end of input: …alse url: "{ctx}/register/registeremail.do",
type: “Post”,
data: {“email” : email},
success: function(transport){
if(transport==0){
var html;
document.getElementById(“em”).style.display=“inline”;
html=“恭喜您,该邮箱可以注册!”;
$("#em").html(html);
clearError(frm[“email”]);
myflag=true;
}else{
addErrors(frm[“email”],“对不起!该邮箱已经注册!”);
document.getElementById(“em”).style.display=“none”;
flag=true;
}
}
});
// alert(flag + “…邮箱…”);
if(flag){
return false;
}

5.新的问题:我认为和ajax的运行流程有很大关系

当只是做到页面检验,没有在userServlet配置实际regist方法时,无法在页面的ajax内部return false 需要在ajax外提供一个flag

但是当在实际配置好regist方法并提供了在Servlet中检验表单的方法后,又能够在ajax内部正常的返回false了,这里究竟是什么原因

6.结果集处理器

在Dao层中访问数据库,选择适当的结果集处理器

你可能感兴趣的:(项目)