用户注册时,需要填写个人信息,其中包括用户名。当用户输入完成时,JavaScript 需要及时检测用户名是否存在,如果存在给出提示,请用户更换用户名。
当然,这个步骤可以在用户提交表单以后由后台程序检测,如果用户名已存在,用户需要返回注册页面重新填写用户名,而前面填写的其他信息也随着网页的跳转已经过期,全部需要重填,这对用户来说是极大的伤害。
因此,有必要使用 AJAX 在用户不提交信息的情况下及时检测用户名是否存在。
前台代码:
请输入用户名:
document.getElementById("demo").οnblur=function(){ // 输入框失去焦点
var thisNode=this;
var span=document.getElementById("result");
var xmlhttp;
try{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}catch(e){
// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if(xmlhttp.readyState<4){ // 正在交互
span.style.color="blue";
span.innerHTML="正在检测...";
}
if (xmlhttp.readyState==4 && xmlhttp.status==200){ // 请求成功
if(parseInt(xmlhttp.responseText)){ // 将服务器返回的数据转换为整数
span.style.color="red";
span.innerHTML="抱歉,您填写的用户名已经存在!";
}else{
span.style.color="green";
span.innerHTML="恭喜你,填写正确!";
}
}
}
xmlhttp.open("POST","/demo/javascript/ajax/ajaxDemo.php?action=checkUserName",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("username="+thisNode.value);
}
后台代码(PHP):
if($_GET['action']=="checkUserName"){
// 为简单起见,这里不再查询数据库,使用 3 个用户名作为示例
if(
$_POST['username']=="admin"||
$_POST['username']=="xiaoming"||
$_POST['username']=="zhangsan"
){
echo 1;
}else{
echo 0;
}
}
?>
实例演示(输入完成,请将焦点离开输入框):
请输入用户名:
说明:"admin"、"xiaoming"和"zhangsan"三个用户名已存在。