日期:2014-05-16  浏览次数:20569 次

Ajax实现简单用户名重名查询

很早就想发布这篇POST了,Ajax实现简单用户名重名查询,引用了xmlhttprequest object pool,如下:
?
/**
?* XMLHttpRequest Object Pool
?*
?* @author??? legend <legendsky@hotmail.com>
?* @link??????http://www.ugia.cn/?p=85
?* @Copyright?www.ugia.cn
?*/

var XMLHttp = {
??? _objPool: [],

??? _getInstance: function ()
??? {
??????? for (var i = 0; i < this._objPool.length; i ++)
??????? {
??????????? if (this._objPool[i].readyState == 0 || this._objPool[i].readyState == 4)
??????????? {
??????????????? return this._objPool[i];
??????????? }
??????? }

??????? // IE5中不支持push方法
??????? this._objPool[this._objPool.length] = this._createObj();

??????? return this._objPool[this._objPool.length - 1];
??? },

??? _createObj: function ()
??? {
??????? if (window.XMLHttpRequest)
??????? {
??????????? var objXMLHttp = new XMLHttpRequest();

??????? }
??????? else
??????? {
??????????? var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
??????????? for(var n = 0; n < MSXML.length; n ++)
??????????? {
??????????????? try
??????????????? {
??????????????????? var objXMLHttp = new ActiveXObject(MSXML[n]);
??????????????????? break;
??????????????? }
??????????????? catch(e)
??????????????? {
??????????????? }
??????????? }
???????? }?????????

??????? // mozilla某些版本没有readyState属性
??????? if (objXMLHttp.readyState == null)
??????? {
??????????? objXMLHttp.readyState = 0;

??????????? objXMLHttp.addEventListener("load", function ()
??????????????? {
??????????????????? objXMLHttp.readyState = 4;

??????????????????? if (typeof objXMLHttp.onreadystatechange == "function")
??????????????????? {
??????????????????????? objXMLHttp.onreadystatechange();
??????????????????? }
??????????????? },? false);
??????? }

??????? return objXMLHttp;
??? },

??? // 发送请求(方法[post,get], 地址, 数据, 回调函数)
??? sendReq: function (method, url, data, callback)
??? {
??????? var objXMLHttp = this._getInstance();

??????? with(objXMLHttp)
??????? {
??????????? try
??????????? {
??????????????? // 加随机数防止缓存
??????????????? if (url.indexOf("?") > 0)
??????????????? {
??????????????????? url += "&randnum=" + Math.random();
??????????????? }
??????????????? else
??????????????? {
??????????????????? url += "?randnum=" + Math.random();
??????????????? }

??????????????? open(method, url, true);

??????????????? // 设定请求编码方式
??????????????? setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8');
??????????????? send(data);
??????????????? onreadystatechange = function ()
??????????????? {
??????????????????? if (objXMLHttp.readyState == 4 && (objXMLHttp.status == 200 || objXMLHttp.status == 304))
??????????????????? {
??????????????????????? callback(objXMLHttp);
??????????????????? }
??????????????? }
??????????? }
??????????? catch(e)
??????????? {
??????????????? alert(e);
??????????? }
??????? }
??? }
};?
ASPX:
?
?1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Login.aspx.cs" Inherits="THttpModule.Login" %>?
2??
3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">?
4 <html xmlns="http://www.w3.org/1999/xhtml">?
5 <head runat="server">?
6???? <title>Login Page</title>?
7???? <style type="text/css" media="screen">?
8???????? @import url("http://www.taobao.com/home/css/tbsp/master/global_v3a.php?t=20080429.css");?
9???????? @import url("http://www.