zoukankan      html  css  js  c++  java
  • XMLHttpRequest实现无刷新验证用户名 .

    在用户注册时,我们经常需要检查用户名是否存在,本文就是实现无刷新验证用户名

    打开开发环境VS 2005,新建项目(或打开现有项目),新建一个Web窗体,命名为 Default.aspx

    代码如下:

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
    <!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>
    <script type="text/javascript"><!--
    var xmlHttp=null;

    function createXMLHttpRequest()
    {
    if(xmlHttp == null){
    if(window.XMLHttpRequest) {
    //Mozilla 浏览器
    xmlHttp = new XMLHttpRequest();
    }
    else if(window.ActiveXObject) {
    // IE浏览器
    try {
    xmlHttp
    = new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch (e) {
    try {
    xmlHttp
    = new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e) {
    //alert('创建失败');
    }
    }
    }
    }
    }
    function openAjax()
    {
    if( xmlHttp == null)
    {
    createXMLHttpRequest();
    if( xmlHttp == null)
    {
    //alert('出错');
    return ;
    }
    }

    var val=document.getElementById('txt').value;

    xmlHttp.open(
    "get","VerifyUserNameHandler.ashx?para="+val+"&date="+new Date(),true);
    xmlHttp.onreadystatechange
    =xmlHttpChange;
    xmlHttp.send(
    null);

    document.getElementById(
    'resultSpan').innerHTML='正在检查,请稍候...';
    }

    function xmlHttpChange()
    {
    if(xmlHttp.readyState==4)
    {
    if(xmlHttp.status==200)
    {
    var res=xmlHttp.responseText;
    document.getElementById(
    'resultSpan').innerHTML=res;

    if(res=='恭喜,用户名可以使用。')
    {
    setTimeout(
    "document.getElementById('resultSpan').innerHTML='';",2000);
    }
    else if(res=='抱歉,用户名已被使用。')
    {
    document.getElementById(
    'txt').focus();
    }
    }
    }
    }
    // --></script>
    </head>
    <body>
    <form id="form1" runat="server">
    用户名:
    <input type="text" id='txt' value="Sandy" onblur="openAjax();" /> <span id="resultSpan"></span>
    </form>
    </body>
    </html>

    然后新建一个一般处理程序,命名为 VerifyUserNameHandler.ashx

    代码如下:

    <%@ WebHandler Language="C#" Class="VerifyUserNameHandler" %>
    using System;
    using System.Web;
    using System.Collections;
    using System.Collections.Generic;
    public class VerifyUserNameHandler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
    //context.Response.ContentType = "text/plain";
    string _name = context.Request.QueryString["para"];
    _name = string.IsNullOrEmpty(_name) ? "" : _name;
    System.Threading.Thread.Sleep(3000);//用线程来模拟数据库查询工作
    string[] Names = new string[] { "Sandy", "阿非", "abc" };//这里用Names数组来代替数据库中的结果集
    if (Array.IndexOf<string>(Names, _name) == -1)
    {
    context.Response.Write("恭喜,用户名可以使用。");
    }
    else
    {
    context.Response.Write("抱歉,用户名已被使用。");
    }
    }

    public bool IsReusable {
    get {
    return false;
    }
    }
    }

    到这里程序已经完成。

    主要是利用了XMLHttpRequest对象采用异步的方式去访问服务器,获得响应后触发定义好的回调函数

    本文是XMLHttpRequest对象异步方式对服务器发送Get方式的请求,访问服务器的文件为.ashx

  • 相关阅读:
    anaconda安装
    MySQL数据库安装(windows 10 64bit)
    Redis数据库安装(windows 10 64bit)
    MongoDB可视化界面配置
    MongoDB安装(windows 10环境)
    四,程序流程控制之函数
    三,程序流程控制之顺序结构、分支结构与循环结构
    一,Python入门
    关于如何使用Python绘制基本数据图形模型
    关联分析
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/2392563.html
Copyright © 2011-2022 走看看