Asp.Net教程,WinForm教程,Asp.Net MVC,vs2008教程,vs2010教程,Silverlight技术,源码下载,Asp.Net视频教程
全站热门标签
vs2010 Silverlight 存储过程 水晶报表 ADO.NET JavaScript LINQ AjaxPro DataGridView 面向对象 Extjs GridView XML DevExpress HTML教程 Oracle jQuery 分页 GDI+ Visual C++2010 MySQL Office2010 WPF MVC Dojo WCF4.0 VB.NET Sql2005 textbox cookie WCF WinForm Discuz!NT SQL经典语句 T-SQL checkbox ASPxGridView F# asp.net SQL VS2008新特性 DropDownList Access TreeView Ajax VS2008 页面执行时间 Flex 字符串 回调 VB2005 DataSet C#时间 ASP.NET性能优化 用户在线检测 动画
jQuery JavaScript Html/Css Flex Dojo ExtJSAJAX
当前位置: 主页 > Web编程 > AJAX >

AJAX无刷新检测用户名是否占用,如果占用则不能提交

时间:2010-03-27 22:35来源:未知 作者:admin 点击:

在网上找的ajax代码判断用户是否被注册过,这些代码都有一个共同的点,如果异步检测到数据库中有相同的用户名,那么返回的xmlHttp.responseText只是提示我们该数据数据库中已存在,但是却忽略了一个问题,就是可能用户还是用这个相同的用户名直接提交,那么我们检测这一步就相当于是一个摆设,没有任何限制.所以我就对此做了些改进,将传回来的数据进行了判断,然后根据具体情况,将提交按钮的disabled值进行改写,这样如果检测到用户名相同的话,提交按钮是不可用的.

效果如下:

 

 

js代码如下:

<mce:script type="text/javascript"><!--  
        // JScript 文件  
        var xmlHttp;  
        function createXMLHttpRequest()  
        {  
            if(window.ActiveXObject)  
            {  
                 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");  
            }  
            else if(window.XMLHttpRequest)  
            {  
                xmlHttp = new XMLHttpRequest();  
            }  
        }  
        //发送  
        function CallServer()  
        {  
            createXMLHttpRequest();  
            var uname=document.getElementById("username").value;  
            if(uname==""||uname==null)  
            {   
                document.getElementById("username").focus();     
                return false;  
            }  
             var url = "ajaxCheckName.ashx?name=" +uname+"&rd="+Math.random();  
             xmlHttp.open("GET", url, true);  
             xmlHttp.onreadystatechange = ShowResult;  
             xmlHttp.send(null);  
        }  
        //回调方法  
        function ShowResult()  
        {  
            if (xmlHttp.readyState < 4)   
            {  
                showSameName.innerHTML="<div class=r_loading></div>";  
            }  
            if(xmlHttp.readyState==4)  
            {  
                if(xmlHttp.status==200)  
                {  
                    showSameName.innerHTML=xmlHttp.responseText;  
                    if(showSameName.innerHTML=='<DIV class=r_err>抱歉,用户名已存在</DIV>')  
                    {  
                        document.getElementById("Button1").disabled=true;  
                    }  
                    else 
                    {  
                        document.getElementById("Button1").disabled=false;  
                    }  
                }  
            }  
        }  
        //如果同名后  
      
// --></mce:script> 
<mce:script type="text/javascript"><!--
        // JScript 文件
        var xmlHttp;
        function createXMLHttpRequest()
        {
            if(window.ActiveXObject)
            {
                 xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            else if(window.XMLHttpRequest)
            {
                xmlHttp = new XMLHttpRequest();
            }
        }
        //发送
        function CallServer()
        {
            createXMLHttpRequest();
            var uname=document.getElementById("username").value;
            if(uname==""||uname==null)
            {
                document.getElementById("username").focus();  
                return false;
            }
             var url = "ajaxCheckName.ashx?name=" +uname+"&rd="+Math.random();
             xmlHttp.open("GET", url, true);
             xmlHttp.onreadystatechange = ShowResult;
             xmlHttp.send(null);
        }
        //回调方法
        function ShowResult()
        {
            if (xmlHttp.readyState < 4)
            {
             showSameName.innerHTML="<div class=r_loading></div>";
            }
            if(xmlHttp.readyState==4)
            {
                if(xmlHttp.status==200)
                {
                    showSameName.innerHTML=xmlHttp.responseText;
                    if(showSameName.innerHTML=='<DIV class=r_err>抱歉,用户名已存在</DIV>')
                    {
                        document.getElementById("Button1").disabled=true;
                    }
                    else
                    {
                        document.getElementById("Button1").disabled=false;
                    }
                }
            }
        }
        //如果同名后
   
// --></mce:script>

aspx页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AdmUser.aspx.cs" Inherits="Administrator_AminUser" %>  
 
<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>   
 
<!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 runat="server">  
    <title>无标题页</title>  
    <mce:style type="text/css"><!--  
          
        .r_ok{background:url(../images/r_ok.gif) no-repeat;padding-left:35px;height:22px;line-height:22px;color:#333}  
        .r_err{background:url(../images/r_err.gif) no-repeat;padding-left:35px;height:22px;line-height:22px;color:#333}  
        .r_loading{background:url(../images/loading.gif) no-repeat;padding-right:5px;height:22px;line-height:22px;color:#333}  
    </style>  
      
</head>  
<body style="background-color:White; margin:0 5px 0 5px;" mce_style="background-color:White; margin:0 5px 0 5px;">  
 <form id="form1" runat="server">  
   <div>  
       <asp:ScriptManager ID="ScriptManager1" runat="server">  
       </asp:ScriptManager>  
     
        <table style="width:100%; border: 1px solid #003399; border-collapse: collapse; text-align: left; font-size: 13px;">  
            <tr>  
                <td>  
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">  
                        <tr>  
                            <td height="24" bgcolor="#507cd1">  
                                <table width="100%" border="0" cellspacing="0" cellpadding="0">  
                                    <tr>  
                                        <td>  
                                            <table width="100%" border="0" cellspacing="0" cellpadding="0" >  
                                                <tr>  
                                                    <td  style="background-image: url(../Images/vHeader.gif);height: 25px; padding-left: 10px; font-weight: bold;">添加新用户  
                                                    </td>  
                                                </tr>  
                                            </table>  
                                        </td>  
                                    </tr>  
                                </table>  
                            </td>  
                        </tr>    
                    </table>  
                </td>  
            </tr>  
            <tr>  
                <td>  
                    <table style="border: 0px solid #507cd1; width:100%;background-color: #FFFFFF; visibility: collapse; text-align:center;">  
                        <tr>  
                            <td align="right" style="font-size: small" mce_style="font-size: small" class="style2">用户名:</td>  
                            <td align="left" style="color: #FF0000" mce_style="color: #FF0000"><asp:TextBox ID="username" runat="server" onblur="CallServer();"></asp:TextBox> *  
                            </td>  
                            <td id="showSameName" style=" text-align:left; width:50%">   
                                                            </td>  
                        </tr>  
                                                <tr>  
                            <td>   
                            </td>  
                            <td style=" text-align:left; padding-left:10px;" mce_style=" text-align:left; padding-left:10px;">  
                                <asp:Button ID="Button1" runat="server" Font-Size="Small" Text="添加" onclick="Button1_Click" />  <input class="HtmlButton" id="Reset1" type="reset" value="重置" />  
                            </td>  
                            <td></td>  
                        </tr>  
                    </table>  
                </td>  
            </tr>  
        </table>  
      </div>  
    </form>  
    </body>  
</html> 
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="AdmUser.aspx.cs" Inherits="Administrator_AminUser" %>

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="cc1" %>

<!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 runat="server">
    <title>无标题页</title>
    <mce:style type="text/css"><!--
       
        .r_ok{background:url(../images/r_ok.gif) no-repeat;padding-left:35px;height:22px;line-height:22px;color:#333}
        .r_err{background:url(../images/r_err.gif) no-repeat;padding-left:35px;height:22px;line-height:22px;color:#333}
        .r_loading{background:url(../images/loading.gif) no-repeat;padding-right:5px;height:22px;line-height:22px;color:#333}
    </style>
   
</head>
<body style="background-color:White; margin:0 5px 0 5px;" mce_style="background-color:White; margin:0 5px 0 5px;">
 <form id="form1" runat="server">
   <div>
       <asp:ScriptManager ID="ScriptManager1" runat="server">
       </asp:ScriptManager>
  
        <table style="width:100%; border: 1px solid #003399; border-collapse: collapse; text-align: left; font-size: 13px;">
            <tr>
                <td>
                    <table width="100%" border="0" cellspacing="0" cellpadding="0">
                        <tr>
                            <td height="24" bgcolor="#507cd1">
                                <table width="100%" border="0" cellspacing="0" cellpadding="0">
                                    <tr>
                                        <td>
                                            <table width="100%" border="0" cellspacing="0" cellpadding="0" >
                                                <tr>
                                                    <td  style="background-image: url(../Images/vHeader.gif);height: 25px; padding-left: 10px; font-weight: bold;">添加新用户
                                                    </td>
                                                </tr>
                                            </table>
                                        </td>
                                    </tr>
                                </table>
                            </td>
                        </tr> 
                    </table>
                </td>
            </tr>
            <tr>
                <td>
                    <table style="border: 0px solid #507cd1; width:100%;background-color: #FFFFFF; visibility: collapse; text-align:center;">
                        <tr>
                            <td align="right" style="font-size: small" mce_style="font-size: small" class="style2">用户名:</td>
                            <td align="left" style="color: #FF0000" mce_style="color: #FF0000"><asp:TextBox ID="username" runat="server" onblur="CallServer();"></asp:TextBox> *
                            </td>
                            <td id="showSameName" style=" text-align:left; width:50%">
                                                            </td>
                        </tr>
                                                <tr>
                            <td>
                            </td>
                            <td style=" text-align:left; padding-left:10px;" mce_style=" text-align:left; padding-left:10px;">
                                <asp:Button ID="Button1" runat="server" Font-Size="Small" Text="添加" onclick="Button1_Click" />  <input class="HtmlButton" id="Reset1" type="reset" value="重置" />
                            </td>
                            <td></td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>
      </div>
    </form>
    </body>
</html>
 

一般处理程序页面(ajaxCheckName.ashx)
public void ProcessRequest (HttpContext context)   
    {  
        context.Response.ContentType = "text/plain";  
        //context.Response.Write("Hello World");  
        string flag = string.Empty;  
        string strUserName = context.Request.QueryString[0];  
        if (!isUserNameExist(strUserName))  
        {  
            flag = "<div class=r_ok>恭喜,该用户名可以注册</div>";  
        }  
        else 
        {  
            flag = "<div class=r_err>抱歉,用户名已存在</div>";  
        }  
        context.Response.Write(flag);  
    }  
    private bool isUserNameExist(string strUserName)  
    {  
        bool ajaxRet = false;  
        //在实际的项目应用中下面就可以去执行数据库查询进行验证  
        string sql = "select top 1 * from AdmUser where adminName='" + strUserName + "'";  
        if(ExamDb.GetSingleValue(sql)!="")  
        {  
            ajaxRet = true;  
        }  
        return ajaxRet;  
    } 

(责任编辑:admin)
Tags:AJAX检测用户名
责任编辑:admin
返回顶部
------分隔线----------------------------
推荐内容
骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价 骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价
  • JQuery RadioButtonList

    首先介绍程序规则: 1.对以下的选择进行检查,检查是否全部选中 2,所谓的全部选中是指,一行中三个radiobutton必须有一个radiobutton被选中。...

  • JQuery实现智能输入提示(仿机票预订网站)

    最近在研究JQuery框架,JQuery是一套很优秀的JS框架,可以实现很多美观实用的控件。今天给大家推荐一个智能提示的空间,是模仿现在很多机票预订网站的城市智...

  • jQuery得到ashx返回的JSON格式的DataSet的方法

    jQuery得到ashx返回的JSON格式的DataSet的方法...

  • JQuery点击行(tr)实现checkBox选中,反选时移除和添加样式

    用到了三元运算符,和一个自定义的函数。 点击行时效果代码: $( tr ).live( click , function (){ if ($( this ).h...

  • 用jQuery模仿新浪微博时间组件

    废话不多说,实现原理主要是处理table,生成tr td,其中最重要的是如何找出每月第一天是星期几,然后就能对应出这个月的余下天数. 首先,说下有些人说这是重复...

  • Jquery之Ajax运用_学习运用篇

    JQuery中Ajax的运用相信很多人都已熟悉,本文主要是记录下个人实践中的应用知识,旨在加强记忆。 还是先说一些 基础知识: 语法:$.ajax({optio...

  • JQuery单选按钮和多选按钮状态判断

    function check_required() { var valid = true; var required=new Array; $(.require...

  • jQuery AJAX的小应用——手机号码归属地查询

    jQuery AJAX的小应用手机号码归属地查询 想测试下jQuery调用个第三方的WebService,利用 jQuery 的 $.get(url, data...

  • 多标签折页(jQuery示例)

    现在的垃圾留言越来越智能,并且从留言内容几乎看不出来是垃圾留言,而大量的垃圾留言会导致文章可读性下降,并可能会被搜索引擎惩罚,经过一段时间的分析和思考,我发现一...

  • JQuery 文本框高亮显示插件

    JQuery 中没有这个方法,自己今天写了一个Plugin,把代码贴出来分享一下; 代码如下: jquery-highlight.js /* descripti...

  • jquery的select插件

    Jquery是可以操作select表单控件的,比较反锁,下面是收集来的一个插件,还不错,能满足基本的选择。 可以使用这样的引入: type=text/javas...

  • 使用Jquery完成图片的预加载

    // 定义预加载图片列表的函数(有参数) jQuery.preloadImages = function (){ // 遍历图片 for ( var i = 0...

  • jQuery在asp.net中实现图片自动滚动

    时间真快,不知不觉12月已经过了一半了,新的一年即将到来。有段时间没写东西了,技术这东东天天都在更新,天天都是一个新面孔,如果不坚持学习肯定就会落在队尾。要想跟...

  • JQuery遍历表格指定列

    script type=text/javas cript $(function(){ $(#tb tr:gt(0)).each(function(){ var ...

  • AJAX无刷新下拉框联动

    AJAX无刷新下拉框联动的简单示例,分别使用了AJAX组件和xmlHttp异步刷新两种方式。 前台代码: %...@ Page Language=C# Auto...