Ajax实时验证用户名/邮箱等是否已经存在的代码打包


Posted in PHP onDecember 01, 2011

今天分享一个“利用Ajax技术来检测用户名是否存在”的例子。
利用Ajax技术来检测用户名是否存在的原理流程图:
Ajax实时验证用户名/邮箱等是否已经存在的代码打包

最终结果截图:

Ajax实时验证用户名/邮箱等是否已经存在的代码打包

Ajax实时验证用户名/邮箱等是否已经存在的代码打包

 


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Ajax检测用户名</title> 
<script type="text/javascript" src="ajax.js"></script> 
</head> 
<body> 
<form name="myform"> 
用户名:<input type="text" name="user" onblur="checkname();"> 
<span id="checkbox"></span> 
</form> 
</body> 
</html>

代码解释:
①实现该功能的核心代码在ajax.js,需要另外引进
②给form命名,因为后面我们需要利用JS来取得input框中的value
③给input框添加一个“onblur”事件,即当“焦点”失去时触发该事件(即流程图的“触发控件”)
④<span id="checkbox"></span>用来放从服务器发送回来的数据(即“用户名已存在”等)
<?php 
mysql_connect("localhost",'root',''); 
mysql_select_db('test'); 
$sql="select * from ajax where name='$_GET[id]'"; 
$query=mysql_query($sql); 
if(is_array(mysql_fetch_array($query))){ 
echo "<font color=red>用户名已存在</font>"; 
}else{ 
echo "<font color=green>用户名可以使用</font>"; 
} 
?>

代码解释:
通过ajax的open方法,将用户输入”用户名“通过id传递给进来(即$_GET[id]),此时将对指定的数据库表中进行查询,检查是否有存在该“用户名”
ajax.js
// JavaScript Document 
var XHR; //定义一个全局对象 
function createXHR(){ //首先我们得创建一个XMLHttpRequest对象 
if(window.ActiveXObject){//IE的低版本系类 
XHR=new ActiveXObject('Microsoft.XMLHTTP');//之前IE垄断了整个浏览器市场,没遵循W3C标准,所以就有了这句代码。。。但IE6之后开始有所改观 
}else if(window.XMLHttpRequest){//非IE系列的浏览器,但包括IE7 IE8 
XHR=new XMLHttpRequest(); 
} 
} 
function checkname(){ 
var username=document.myform.user.value; 
createXHR(); 
XHR.open("GET","checkname.php?id="+username,true);//true:表示异步传输,而不等send()方法返回结果,这正是ajax的核心思想 
XHR.onreadystatechange=byhongfei;//当状态改变时,调用byhongfei这个方法,方法的内容我们另外定义 
XHR.send(null); 
} 
function byhongfei(){ 
if(XHR.readyState == 4){//关于Ajax引擎对象中的方法和属性,可以参考我的另一篇博文:http://www.cnblogs.com/hongfei/archive/2011/11/29/2265377.html 
if(XHR.status == 200){ 
var textHTML=XHR.responseText; 
document.getElementById('checkbox').innerHTML=textHTML; 
} 
} 
}

代码解释:
①首先我们需要声明一个ajax引擎的对象:XHR(随便命名一个)
②因为微软的低版本IE和其他的浏览器创建ajax对象的方式不一样,现在IE和其他浏览器的市场份额几乎各占一半,所以我们得两方面都考虑到,IE-->ActiveXObject;其他-->XMLHttpRequest。我将她封装在一个函数中:createXHR
③我们在index.html中指定的当失去“焦点”时就会触发checkname()函数。那么我们如何将用户输入的“用户名”捕获呢?这里,利用js即可轻松捕获到document.myform.user.value(现在知道为何给form和input命名了吧,这一步对应流程图的“获得填写内容”),有兴趣的博友,可以试试在createXHR()的前一行敲行代码(alert(username)),将捕获到的用户名弹出试试看。
④Ajax引擎有几个方法和属性(可以参考我的另一篇博文:看图理解:普通交互方式和Ajax交互方式区别),使用之前我们得先调用函数craateXHR创建一个ajax对象
⑤有了ajax对象,有三个方法是必不可少的:open()、onreadystatechange、send()。
将请求发送到服务器,要使用open ()和send()方法
open()方法的第一个参数,指示采用GET或者POST方式进行传输。。。。。。
open()方法的第二个参数,指示要请求的URL地址(这里我们请求的是checkname.php文件),可以是绝对或相对地址
open()方法的第三个参数async指示是否采用异步请求,true为采用,这种情况下,通过ajax、js无需等待服务器响应,而是:①在等待服务器响应的同时执行其他脚本②当响应就绪后对响应进行处理。一般对一些小型的请求,async=false也是可以的,但此时就不要编写onreadystatechange 函数了
onreadystatechange事件:当ajax的属性readyState改变时,就触发此事件。在此事件中,当服务器响应已做好被处理的准备时(即readyState=4且status=200时),我们规定要让服务器做什么任务,这里我们规定将从数据库检索到的结果输出到id为”checkbox“的span标签中。
⑥通过checkname.php,查询数据库后,将得到查询结果(即服务器的响应,对应流程图中的”查询数据库“),此时数据还在ajax引擎中,如需获得该来自服务器的响应,我们需要使用XMLHttpRequest对象的responText或responseXML属性,并通过DOM属性innerHTML将从服务器响应回来的数据设置为id=”checkbox“的span标签的值
注:利用ajax监测邮箱是否存在一个道理,我们还可以利用ajax实时监测用户输入的密码强度,此时,需要用到可以把onblur事件改为onfocus事件。
原创 cnblogs 小飞

源码打包下载 /201112/yuanma/checkname_php.rar

PHP 相关文章推荐
PHP的ASP防火墙
Oct 09 PHP
分享PHP入门的学习方法
Jan 02 PHP
php xml 入门学习资料
Jan 01 PHP
ThinkPHP CURD方法之field方法详解
Jun 18 PHP
php中json_encode UTF-8中文乱码的更好解决方法
Sep 28 PHP
几个实用的PHP内置函数使用指南
Nov 27 PHP
php取得字符串首字母的方法
Mar 25 PHP
php类常量用法实例分析
Jul 09 PHP
php rmdir使用递归函数删除非空目录实例详解
Oct 20 PHP
thinkPHP框架实现生成条形码的方法示例
Jun 06 PHP
php让json_encode不自动转义斜杠“/”的方法
Apr 27 PHP
PHP7 整型处理机制修改
Mar 09 PHP
PHP循环语句笔记(foreach,list)
Nov 29 #PHP
openPNE常用方法分享
Nov 29 #PHP
使用php+Ajax实现唯一校验实现代码[简单应用]
Nov 29 #PHP
php从右向左/从左向右截取字符串的实现方法
Nov 28 #PHP
PHP的array_diff()函数在处理大数组时的效率问题
Nov 27 #PHP
PHP 中检查或过滤IP地址的实现代码
Nov 27 #PHP
PHP中usort在值相同时改变原始位置问题的解决方法
Nov 27 #PHP
You might like
PHP实现限制IP访问及提交次数的方法详解
2017/07/17 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
js Form.elements[i]的使用实例
2011/11/13 Javascript
js几秒以后倒计时跳转示例
2013/12/26 Javascript
JavaScript中的getTime()方法使用详解
2015/06/10 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
jQuery多条件筛选如何实现
2015/11/04 Javascript
Bootstrap每天必学之标签与徽章
2015/11/27 Javascript
window.onerror()的用法与实例分析
2016/01/27 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
js实现彩色条纹滚动条效果
2017/03/15 Javascript
jquery平滑滚动到顶部插件使用详解
2017/05/08 jQuery
基于jQuery ztree实现表格风格的树状结构
2018/08/31 jQuery
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
使用easyui从servlet传递json数据到前端页面的两种方法
2019/09/05 Javascript
详解vue-flickity的fullScreen功能实现
2020/04/07 Javascript
python基础教程之循环介绍
2014/08/29 Python
Python的动态重新封装的教程
2015/04/11 Python
Python实现建立SSH连接的方法
2015/06/03 Python
Python探索之修改Python搜索路径
2017/10/25 Python
Python基于hashlib模块的文件MD5一致性加密验证示例
2018/02/10 Python
python多线程同步实例教程
2019/08/11 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
下载与当前Chrome对应的chromedriver.exe(用于python+selenium)
2020/01/14 Python
使用python matplotlib 画图导入到word中如何保证分辨率
2020/04/16 Python
elf彩妆英国官网:e.l.f. Cosmetics英国(美国平价彩妆品牌)
2017/11/02 全球购物
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
Tenstickers法国:墙贴和装饰贴纸
2019/08/26 全球购物
英国排名第一的餐具品牌:Denby Pottery
2019/11/01 全球购物
学生安全承诺书
2014/05/22 职场文书
中文专业求职信
2014/06/20 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
打架检讨书范文
2015/01/27 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
签约仪式致辞
2015/07/30 职场文书
单位病假条范文
2015/08/17 职场文书