<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RegisterOne.aspx.cs" Inherits="SMGKManager_RegisterOne" %>
<!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">
<script type="text/javascript">
function regok()
{
    document.getElementById("content").style.display='none';
    document.getElementById("content2").style.display='block';
}
</script>
    <title>无标题页</title>
</head>
<body>    <form id="form1" runat="server">
    <asp:ScriptManager runat="server" ID="scriptmanager1"></asp:ScriptManager>
    <div id="head"></div>
    <div id="content" runat="server" align="center">
    <div>账户:<input class="txtreg1"  onmouseover="this.className='txtreg2'" onmouseout="this.className='txtreg1'" id="txtloginname" runat="server" type="text" onblur="j_loginname()" /></div>
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 style=\"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 style=\"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 style=\"color: #333; font-size: 10pt; font-famil: Arial, Helvetica, sans-serif\"><font color=\"red\">对不起!您注册的用户已经存在!</font></span>";

break;
case "2"://可以注册

document.getElementById("CheckLoginName").innerHTML = "<span style=\"color: #333; font-size: 10pt; font-famil: Arial, Helvetica, sans-serif\"><font color=\"red\">恭喜你可以正常注册!</font></span>";

break;
}
}        
}
<%@ 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;
         }
火狐跟google不能用,在IE下完美运行,不知道为什么??谁能解释下啊?????

解决方案 »

  1.   

    跟踪一下js返回值正确吗?
    服务器端的东西跟浏览器无关,不论是ashx,asmx还是aspx。估计还是js的兼容性问题。调试一下!
      

  2.   

    //向服务器发送请求,检测邮箱是否已经被注册
    function checkusername(name)
    {
    var d = new Date();
    var strURL = "Register.ashx?type=1&username=" + name + "&guid=" + d.getTime();
    //此处alert(xmlDom)能alert出来但后面就不行了,有人说responseText看返回什么,关键他不进那段代码啊,从下面开始alert就没反映了,但IE都正常,也能alert出来。。
    xmlDom.Open("get",strURL , true);
    xmlDom.onreadystatechange = fnRun1;
    xmlDom.Send(xmlDom);
    document.getElementById("CheckLoginName").innerHTML = "<span><font color=\"red\">正在检测邮箱是否重复...请稍候...<font></span>";}
      

  3.   

    应该是你的程序服务器端执行出错了,在回调函数里跟踪!function fnRun1()
    {
    //跟踪
    alert(xmlDom.readyState);
    alert(xmlDom.status);
    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 style=\"color: #333; font-size: 10pt; font-famil: Arial, Helvetica, sans-serif\"><font color=\"red\">对不起!您注册的用户已经存在!</font></span>";
                
                break;
            case "2"://可以注册
                
                document.getElementById("CheckLoginName").innerHTML = "<span style=\"color: #333; font-size: 10pt; font-famil: Arial, Helvetica, sans-serif\"><font color=\"red\">恭喜你可以正常注册!</font></span>";
            
                break;
        }
    }        
      

  4.   

    function ajax_xmlhttp(){   
        var XmlHttp;   
            if (window.ActiveXObject)   
            {   
                var arr=["MSXML2.XMLHttp.6.0","MSXML2.XMLHttp.5.0",   
                          "MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0","MSXML2.XMLHttp","Microsoft.XMLHttp"];   
                for(var i=0;i<arr.length;i++)   
                {   
                    try   
                    {   
                        XmlHttp=new ActiveXObject(arr[i]);   
                        return XmlHttp;   
                    }   
                    catch(error)   
                    {   
                       
                    }   
                }   
            }   
            else   
            {   
                try   
                {   
                    XmlHttp=new XMLHttpRequest();   
                    return XmlHttp;   
                }   
                catch(otherError)   
                {   
                   
                }   
            }    
    }   浏览器兼容问题!干嘛用jquery的能解决的东西还要用js来做?而且你的ajax也最好平时封闭成一个js文件
      

  5.   

    var xmlHttp; function createXMLHttpRequest() {
            var request = false;
            if(window.XMLHttpRequest) {
                request = new XMLHttpRequest();
                if(request.overrideMimeType) {
                    request.overrideMimeType('text/xml');
                }
            } else if(window.ActiveXObject) {
                var versions = ['Microsoft.XMLHTTP', 'MSXML.XMLHTTP', 'Microsoft.XMLHTTP', 'Msxml2.XMLHTTP.7.0', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.5.0', 'Msxml2.XMLHTTP.4.0', 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP'];
                for(var i=0; i<versions.length; i++) {
                    try {
                        request = new ActiveXObject(versions[i]);
                        if(request) {
                            return request;
                        }
                    } catch(e) {}
                }
            }
            return request;
        }
      

  6.   

    他就不进回调函数啊???如何跟踪?我页面上还有一个AJAX的级联,放JQUERY的AJAX会冲突
      

  7.   

    FF 下看看有没有JS错误,FF不是可以查看js错误的么
      

  8.   

    问题已解决,是因为
    xmlDom.Open("get",strURL , true);
    xmlDom.onreadystatechange = fnRun1;
    xmlDom.Send(xmlDom);
    3句有错误,O跟S要小写!!!!!!!!!!