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

  • 相关阅读:
    apply 和 call 方法详解【转载】
    npm无法安装node-sass的解决方法
    rem
    创建和存储 cookie
    webpack学习(一):webpack的安装和命令行
    gulp常用的插件
    移动前端开发之viewport的深入理解
    JavaSE中Collection集合框架学习笔记(3)——遍历对象的Iterator和收集对象后的排序
    JavaSE中Collection集合框架学习笔记(2)——拒绝重复内容的Set和支持队列操作的Queue
    JavaSE中Collection集合框架学习笔记(1)——具有索引的List
  • 原文地址:https://www.cnblogs.com/xiaofengfeng/p/2392563.html
Copyright © 2011-2022 走看看