ajax实例之用户名即时验证

17 篇文章 0 订阅

这个实例功能虽然不复杂,但是是一个综合型的实例,用到的很多方面的知识(html,css,js,ajax,php,mysql,json),很值得初学者实践一下。

先上几张效果图:

图一



图二



图三



图四




下面是代码,所有代码都在同一个文件中,注释没怎么写了。


<?php
	if(isset($_GET['id'])){//当有用户名提交时
		$username=trim($_GET['id']);
		$result=array();
		if(!preg_match('/^[a-z][a-z0-9]{3,19}$/i',$username)){
			$result['status']=0;
			$result['text']='用户名 '.$username.' 格式不正确';
			die(json_encode($result));
		}
		//连接数据库
		mysql_connect("localhost",'root','8888'); 
		mysql_select_db('test'); 
		$sql="select username from users where username='$username'"; 
		$query=mysql_query($sql); 
		if(mysql_num_rows($query)>0){ 
		 	$result['status']=0;
			$result['text']='用户名 '.$username.' 已存在';
		}else{ 
			$result['status']=1;
			$result['text']='用户名 '.$username.' 可用';
		} 
		
		echo json_encode($result);
		die();
	}
?>


<!DOCTYPE html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Ajax实例之用户名即时检测</title> 
<style type="text/css">
body{background-color:#fff;}
p{font-size:20px;font-family:微软雅黑;}
form{font-size:14px;}
input{padding:4px;border:1px solid #dfdfdf;outline:none;border-radius:5px;}
span.info{font-size:12px;color:gray;}
span.ok{font-size:12px;color:green;}
span.bad{font-size:12px;color:red;}
</style>
<script type="text/javascript">

var ajax=null;  

function createajax(){ //创建ajax对象
	if(window.ActiveXObject){ 
		ajax=new ActiveXObject('Microsoft.XMLHTTP');
	}else if(window.XMLHttpRequest){
		ajax=new XMLHttpRequest(); 
	} 
} 

function checkname(){ //失去焦点时调用,检测用户名是否存在
	var username=document.myform.username.value;
	var tip=document.getElementById('tip');
	if(username==""){
		tip.className='bad';
		tip.innerHTML='用户名不能为空';
		return;
	}
	if(null==ajax) 
		createajax(); 
	ajax.open("GET","?id="+username,true);
	ajax.onreadystatechange=change_tip;
	ajax.send(null); 
} 

function change_tip(){ //状态改变时调用
	if(ajax.readyState == 4){
		if(ajax.status == 200){ 
			eval("var obj="+ajax.responseText);
			if(obj.status===1){
				tip.className='ok';
				tip.innerHTML=obj.text;
			}else{
				tip.className='bad';
				tip.innerHTML=obj.text;
			}
		} 
	} 
} 

function show_tip(){//获得焦点时调用,提示用户输入规则
	var tip=document.getElementById('tip');
	tip.className='info';
	tip.innerHTML="用户名,4-20位字母或数字,非数字开头";
}
</script> 
</head> 
<body> 
<p>ajax用户名检测<p><hr>
<form name="myform"> 
用户名 <input type="text" name="username" οnblur="checkname();" οnfοcus="show_tip()"> 
<span id="tip" class="info">用户名,4-20位字母或数字,非数字开头</span> 
</form> 
</body> 
</html> 



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值