做一个AJAX验证用户名是否存在,在ie中正常,在火狐中不正常,废话不说
JS代码
// JScript 文件
var xmlDom = false //XMLHTTP对象
try
{
xmlDom = new ActiveXObject("Msxml2.XMLHTTP");//IE高版本创建XMLHTTP
}
catch(E)
{
try
{
xmlDom = new ActiveXObject("Microsoft.XMLHTTP");//IE低版本创建XMLHTTP
}
catch(E)
{
xmlDom = new XMLHttpRequest();//兼容非IE浏览器,直接创建XMLHTTP对象
}
}
//判断表单
//注册时判断邮箱是否符合规范,是否已经被注册
function j_loginname()
{
var name = document.getElementById("txtloginname").value;
if(name==""){
document.getElementById("CheckLoginName").innerHTML = "<span color: #333; font-size: 10pt; font-famil: Arial, Helvetica, sans-serif\"><font color=\"red\">用户昵称不能为空!</font></span>";
return false;
}
if(!isEmail(name))
{
document.getElementById("CheckLoginName").innerHTML = "<span color: #333; font-size: 10pt; font-famil: Arial, Helvetica, sans-serif\"><font color=\"red\">请输入正确的邮箱!</font></span>";
return false;
}
checkusername(name);
}
//向服务器发送请求,检测邮箱是否已经被注册
function checkusername(name)
{
var d = new Date();
var strURL = "Register.ashx?type=1&username=" + name + "&guid=" + d.getTime();
xmlDom.Open("get",strURL , true);
xmlDom.onreadystatechange = fnRun1;
xmlDom.Send(xmlDom);
document.getElementById("CheckLoginName").innerHTML = "<span><font color=\"red\">正在检测邮箱是否重复...请稍候...<font></span>";
}
//点击注册按钮后 回调的函数,用于显示服务器返回的结果
function fnRun1()
{
if (xmlDom.readyState == 4 && xmlDom.status == 200)//如果请求已经加载并且服务器返回成功
{
var str = xmlDom.responseText; //保存已经查询过的用户名,下次直接返回
switch (str)
{
case "0"://数据出错
document.getElementById("CheckLoginName").innerHTML = "<span><font color=\"red\">数据出错无法识别,请与管理员联系!<font></span>";
break;
case "1"://用户名已经注册
document.getElementById("CheckLoginName").innerHTML = "<span color: #333; font-size: 10pt; font-famil: Arial, Helvetica, sans-serif\"><font color=\"red\">对不起!您注册的用户已经存在!</font></span>";
break;
case "2"://可以注册
document.getElementById("CheckLoginName").innerHTML = "<span color: #333; font-size: 10pt; font-famil: Arial, Helvetica, sans-serif\"><font color=\"red\">恭喜你可以正常注册!</font></span>";
break;
}
}
}
ashx代码
<%@ WebHandler Language="C#" Class="Register" %>
using System;
using System.Web;
using Y.BLL;
using Y.Model.Member;
public class Register : IHttpHandler {
public void ProcessRequest (HttpContext context) {
context.Response.ContentType = "text/xml";
MemberManager membermanager = new MemberManager();
string username = context.Request.QueryString["username"];
string type=context.Request.QueryString["type"];
switch (type)
{
case "1":
int result = membermanager.SelMemberByName(username);
if (result != 0)
{
context.Response.Write("1");//用户名被占用
context.Response.End();
}
else
{
context.Response.Write("2"); //用户名可以注册
context.Response.End();
}
break;
html 代码:onblur="j_loginname()"