Ajax小实例   用户注册异步验证

简介

51cto的程序员应该都有sina微博吧!你会发现当你更改新浪会员名称,输入用户名Tab后,光标焦点移动到密码输出框时,用户名输出框的后面,就已经显示出了验证。验证信息是:你的用户名是否唯一,因为新浪微博和腾讯微博不一样,她的会员用户名都是唯一的,这样好将用户区分开,达到没有重名的目的。

如果用户名已被注册,就显示“用户名已存在”,用户名还没被注册,就显示“用户名可用”。

实现原理

       1、当光标焦点移动到别处时,触发js的window.onblur事件,调用Ajax对象

2、将用户名框内的字符串(document.getElementById(id).value)提交到后台页面

3、与相应数据库里的数据进行比对,再将比对结果返回到界面上,呈现我们面前的就是上面那样的画面。

好处:实现页面的局部刷新,在全部提交到后台前,提前验证并给出结果,提高了输出的效率。

下面不说那么多了,直接上代码:

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 >
            <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;
        }

查看结果:

时间: 2024-08-11 03:35:34

Ajax小实例   用户注册异步验证的相关文章

MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证

原文:MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证 MVC中,关于往后台提交的方法有: 1.Html.BeginForm():同步 2.Ajax.BeginForm():异步 3.js或jQuery提交后台 本文体验Ajax.BeginForm()方法.   View model using System; using System.ComponentModel.DataAnnotations;   namespace XHelent.Models { public

ajax常用实例代码总结参考

http的交互方法有四种:get.post.put(增加数据).delete(删除数据) put和delete实现用的是get和post get方式 页面不能被修改,只是获取查询信息.但是提交的数据会通过链接暴露在外,使用get请求会被人拿到登陆的用户名和密码,url长度有限制 post方式 页面可以修改,比如回帖.评论.但是提交的数据不会暴露在外,url长度无限制,但是提交大小会有限制 默认不被缓存,不在同一个请求域下远程请求,post都会被转为get 推荐两篇不错的jquery教程:<jQu

MVC验证10-到底用哪种方式实现客户端服务端双重异步验证

原文:MVC验证10-到底用哪种方式实现客户端服务端双重异步验证 本篇将通过一个案例来体验使用MVC的Ajax.BeginForm或jQuery来实现异步提交,并在客户端和服务端双双获得验证.希望能梳理.归纳出一个MVC异步验证的通用解决思路.本篇主要涉及: 1.通过Ajax.BeginForm()方式,返回部分视图显示验证信息.2.通过jQuery+Html.BeginForm()方式,返回部分视图显示验证信息.3.通过jquery,返回json字符串,json字符串中包含部分视图及验证信息.

MVC验证11-对复杂类型使用jQuery异步验证

原文:MVC验证11-对复杂类型使用jQuery异步验证 本篇体验使用"jQuery结合Html.BeginForm()"对复杂类型属性进行异步验证.与本篇相关的"兄弟篇"包括: MVC验证08-jQuery异步验证    MVC验证09-使用MVC的Ajax.BeginForm方法实现异步验证    MVC验证10-到底用哪种方式实现客户端服务端双重异步验证 准备工作 □ js方面:1.jquery的某个版本2.jquery.validate.js3.jquery

在ASP.NET MVC中使用Knockout实践06,自定义验证、异步验证

在上一篇中体验了Knockout.Validation的基本验证,本篇体验自定义验证和异步验证. 自定义验证规则 ko.validation有一个rules属性,专门用来存放验证规则,它是一个键值对集合类型,key就是自定义验证规则的名称,value是一个json对象. @{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } <style type="text/c

asp.net 自带ajax 控件的小实例

<form id="Form1" runat="server"> <asp:ScriptManager ID="ScriptManager1" runat="server"> </asp:ScriptManager> <div> <asp:Label ID="Label1" runat="server" Text="车牌号:

【java项目实践】详解Ajax工作原理以及实现异步验证用户名是否存在+源码下载(java版)

一年前,从不知道Ajax是什么,伴随着不断的积累,到现在经常使用,逐渐有了深入的认识.今天,如果想开发一个更加人性化,友好,无刷新,交互性更强的网页,那您的目标一定是Ajax. 介绍 在详细讨论Ajax是什么之前,先让我们花一分钟了解一下Ajax做什么.如图所示: 如上图展示给我们的就是使用Ajax技术实现的效果.伴随着web应用的越来越强大而出现的是等待,等待服务器响应,等待浏览器刷新,等待请求返回和生成新的页面成为了程序员们的最最头疼的难题.随着Ajax的出现使web应用程序变得更完善,更友

【java项目实践】具体解释Ajax工作原理以及实现异步验证username是否存在+源代码下载(java版)

一年前,从不知道Ajax是什么,伴随着不断的积累,到如今常常使用,逐渐有了深入的认识. 今天,假设想开发一个更加人性化,友好,无刷新,交互性更强的网页,那您的目标一定是Ajax. 介绍 在具体讨论Ajax是什么之前,先让我们花一分钟了解一下Ajax做什么.如图所看到的: 如上图展示给我们的就是使用Ajax技术实现的效果.伴随着web应用的越来越强大而出现的是等待.等待server响应,等待浏览器刷新.等待请求返回和生成新的页面成为了程序猿们的最最头疼的难题.随着Ajax的出现使web应用程序变得

struts2+ajax实现异步验证

由于老师布置作业的需要,在添加管理员的时候,要实现验证添加的管理员的用户名是否在数据库中已经存在,然后再客户端给用户一个提示.我首先想到的就是利用ajax实现异步验证技术,由于利用的ssh框架,所以在这要对struts2和ajax进行整合,由于我还没把ajax的一些知识总结出来,所以在这也不提了,有关ajax的详细内容将会在以后的博客中写出来.现在我们就以我做的这个添加管理员,验证管理员的用户名是否存在来说一下这个struts2+ajax实现异步验证技术. 首先我们来看一下我们的form表单: