Ajax小實例 用戶註冊異步驗證

 簡介javascript

    51cto的程序員應該都有sina微博吧!你會發現當你更改新浪會員名稱,輸入用戶名Tab後,光標焦點移動到密碼輸出框時,用戶名輸出框的後面,就已經顯示出了驗證。驗證信息是:你的用戶名是否惟一,由於新浪微博和騰訊微博不同,她的會員用戶名都是惟一的,這樣好將用戶區分開,達到沒有重名的目的。php

    若是用戶名已被註冊,就顯示用戶名已存在,用戶名還沒被註冊,就顯示用戶名可用html

    wKiom1Q1B7_Bl6YAAACNfssa4MU170.jpg

    實現原理前端

       1、當光標焦點移動到別處時,觸發jswindow.onblur事件,調用Ajax對象java

       2、將用戶名框內的字符串(document.getElementById(id).value)提交到後臺頁面mysql

       3、與相應數據庫裏的數據進行比對,再將比對結果返回到界面上,呈現咱們面前的就是上面那樣的畫面。程序員

    

    好處:實現頁面的局部刷新,在所有提交到後臺前,提早驗證並給出結果,提升了輸出的效率。ajax

 

    下面不說那麼多了,直接上代碼:sql

    demo.html    前端頁面  就一個用戶名輸出框(很簡單吧!關鍵是弄懂原理)數據庫

    public.js    封裝了對不一樣瀏覽器、建立不一樣Ajax對象的方法

    ajax.js      Ajax對象的封裝、方法的實現

    demo.php     後臺頁面  主要實現接收數據、選擇並鏈接數據庫、判斷接收的數據與數據庫比對

    

    demo.html

        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
            <title>用戶輸入</title>
            <script language="javascript" src="public.js"></script>
            <script language="javascript" src="ajax.js"></script>
        </head>
    
        <body onload="response()">
            <form>
                 用戶名:
                 <input type="text" name="username" id="username"/><span id="msg"></span>
            </form>
        </body>

    

    public.js

        function createxhr(){
            try{return new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}
            try{return new XMLHttpRequest}catch(e){}
            alert("請更換瀏覽器");
        }
        //獲取DOM對象的id值
        function $(id){
            return document.getElementById(id);
        }

    

    ajax.js 

        function response(){        
            $('username').onblur = function(){
                var uname = this.value; //面向對象編程,this指代"$('username')"
                var xhr = createxhr();
                //應用getTime()方法解決IE緩存問題
                var url = "demo.php?username="+uname+'&_'+new Date().getTime();
                xhr.open('get',url);
                xhr.onreadystatechange = function(){
                    if (xhr.readyState == 4 && xhr.status == 200){
                        var value = xhr.responseText;
                        if (value == 1){
                            $('msg').innerHTML = '<font color = red>用戶名已存在</font>';
                        }else{
                            $('msg').innerHTML = '<font color = green>用戶名可用</font>';
                        }
                    }
                };
                xhr.send(null);
            };
        };

    

    demo.php

        //接收傳遞數據
        $username = $_GET['username'];
        
        //鏈接、選擇數據庫
        mysql_connect('localhost','root','111111');
        mysql_select_db('shop');
        mysql_query('set names gb2312');
        //sql語句、執行
        $sql = "select * from users where username='$username'";
        $result = mysql_query($sql);
        $num = mysql_num_rows($result);//得到結果集的行數
        
        //判斷結果集行數
        if($num>0){
            echo 1;
        }else{
            echo 2;
        }

    查看結果:

        

wKiom1Q1C2bhrI4VAAA6_K3wbYw343.jpg

wKiom1Q1C2ahv13YAAA9kvH_6yY902.jpg

相關文章
相關標籤/搜索