菜单导航

使用Ajax实时检测用户名、邮箱等是否已经存在

作者: 精装之家 来源: 精装之家 发布时间: 2019年10月09日 22:48:18

一个网站采用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>
 用户名:<input type="text" onblur="checkname();">
 <span></span>
 </form>
 </body>
 </html>


代码解释:

①实现该功能的核心代码在ajax.js,需要另外引进

②给form命名,因为后面我们需要利用JS来取得input框中的value

③给input框添加一个“onblur”事件,即当“焦点”失去时触发该事件(即流程图的“触发控件”)

④<span></span>用来放从服务器发送回来的数据(即“用户名已存在”等)

复制代码 代码如下:


<?php
    mysql_connect("localhost",'root','');
    mysql_select_db('test');
    $sql="select * from ajax where";
    $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]),此时将对指定的数据库表中进行查询,检查是否有存在该“用户名”

复制代码 代码如下:


 // 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引擎对象中的方法和属性,可以参考下面文章:
         if(XHR.status == 200){   
             var textHTML=XHR.responseText;           
             document.getElementById('checkbox').innerHTML=textHTML;
         }
     }
 }


代码解释:

①首先我们需要声明一个ajax引擎的对象:XHR(随便命名一个)

②因为微软的低版本IE和其他的浏览器创建ajax对象的方式不一样,现在IE和其他浏览器的市场份额几乎各占一半,所以我们得两方面都考虑到,IE-->ActiveXObject;其他-->XMLHttpRequest。我将她封装在一个函数中:createXHR