AJAX实例-检测用户名是否存在
用户注册时,需要填写个人信息,其中包括用户名。当用户输入完成时,JavaScript 需要及时检测用户名是否存在,如果存在给出提示,请用户更换用户名。
当然,这个步骤可以在用户提交表单以后由后台程序检测,如果用户名已存在,用户需要返回注册页面重新填写用户名,而前面填写的其他信息也随着网页的跳转已经过期,全部需要重填,这对用户来说是极大的伤害。
因此,有必要使用 AJAX 在用户不提交信息的情况下及时检测用户名是否存在。
前台代码:
后台代码(PHP):
实例演示(输入完成,请将焦点离开输入框):
说明:"admin"、"xiaoming"和"zhangsan"三个用户名已存在。
当然,这个步骤可以在用户提交表单以后由后台程序检测,如果用户名已存在,用户需要返回注册页面重新填写用户名,而前面填写的其他信息也随着网页的跳转已经过期,全部需要重填,这对用户来说是极大的伤害。
因此,有必要使用 AJAX 在用户不提交信息的情况下及时检测用户名是否存在。
前台代码:
<p>
请输入用户名:<input type="text" id="demo"/>
<span id="result"></span>
</p>
<script type="text/javascript">
document.getElementById("demo").onblur=function(){// 输入框失去焦点
var thisNode=this;
var span=document.getElementById("result");
var xmlhttp;
try{
// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=newXMLHttpRequest();
}catch(e){
// code for IE6, IE5
xmlhttp=newActiveXObject("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","http://localhost/moyu.php?action=checkUserName",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("username="+thisNode.value);
}
</script>
后台代码(PHP):
<?php
if($_GET['action']=="checkUserName"){
// 为简单起见,这里不再查询数据库,使用 3 个用户名作为示例
if(
$_POST['username']=="admin"||
$_POST['username']=="xiaoming"||
$_POST['username']=="zhangsan"
){
echo 1;
}else{
echo 0;
}
}
?>
实例演示(输入完成,请将焦点离开输入框):
请输入用户名:
说明:"admin"、"xiaoming"和"zhangsan"三个用户名已存在。
魔芋测试: