在用户登录系统时,有时需要先对用户的合法性进行判断,这样就可
以分清楚是用户的用户名错误还是密码错误。使用Ajax无疑是最佳的选择。
1、在输入框中进行设置:
<input id="rep" οnblur="usercheck()">
添加一个ID和触动函数的动作。
2、开始编写usercheck()这个函数:
function usercheck(){
var repUser =$("#rep").val()
$.ajax({
type : 'POST',
url : 'URL?action=?(以AA为例)',
data : "repUser=" + repUser,
dataType : 'json',
success : callback
});
}
在此处需要注意的是,由于调用了Ajax,需要引入包文件。
<script type="text/javascript" src="URL/jquery.js"></script>
3、在目标action中进行判断。
if (action.equals("AA")){
response.setContentType("text/html; charset=utf-8");
PrintWriter out2 = response.getWriter();
String repUser = request.getParameter("repUser");
if (repUser == null && repUser.length() == 0)
return;
{ …………此处编写后台调用和判断的程序,最后的返回值以如下形式返回:
out2.println("{\"Result\":\"?\"}");
}
out2.close();
return;
}
4、根据返回结果在返回函数中进行判断。
function callback(data) {
if (data.Result == '?') {
…………
}
else if(data.Result == '?'){
…………
}
$("#rep").focus();
}
最后,会发现,每次焦点离开后都会调用此函数发生动作,从而引起死循环。因此,
我们设定,只有在第二次的输入值与第一次不同时才会进一步动作。处理的方法是,在
此form中设置一个隐藏变量,每次调用usercheck()这个函数时,都将此值与repUser进
行比较,不相同时执行AJAX程序。且每次都把repUser的最新值传给此隐藏变量,从而
保证最少的动作。