1.首先在web.config中配置好
<httpHandlers>
<add verb="POST,GET" path="ajax/*.ashx" type="Ajax.PageHandlerFactory, Ajax" />
</httpHandlers>2.
private void Page_Load(object sender, System.EventArgs e)
{
Ajax.Utility.RegisterTypeForAjax(typeof(clsValdate) ,this);
}
3.
internal class clsValdate
{
[Ajax.AjaxMethod]
public string ValidateInput(string userName)
{
string su = "xxx";
                  //可以在这里操作.
string retVal = "用户不存在,可以使用!";if(userName.Equals(su))
retVal = "用户名已存在,请选用其它用户名";return retVal;
}
}4.
<script language="javascript" type="text/javascript">
function ValidateInputData()
{
var txt = document.all["txtUserName"];if(txt.value == "")
{
Show("用户名不能为空");
return false;
}var _value = clsValdate.ValidateInput(txt.value).value;
if(_value != null)
{
Show(_value);
}return true;
}function Show(message)
{
var objMessage = document.all["spMessage"];
objMessage.style.display = "";
objMessage.innerText = message;
}
</script>
5.
<table width="450" align="center" cellpadding="2">
<tr>
<td colspan="2" height="20px" align="center"><span id="spMessage" style="display:none;" class="ms"></span></td>
</tr>
<tr>
<td align="right">用户名</td>
<td>
<asp:TextBox id="txtUserName" onblur="return ValidateInputData();" runat="server" CssClass="tb"></asp:TextBox></td>
</tr>
<tr>
<td align="right">密码</td>
<td>
<asp:TextBox id="TextBox2" runat="server" CssClass="tb"></asp:TextBox></td>
</tr>
<tr>
<td align="right">确认密码</td>
<td>
<asp:TextBox id="TextBox3" runat="server" CssClass="tb"></asp:TextBox></td>
</tr>
<tr>
<td colspan="2" align="center">
<asp:Button id="btnSubmit" runat="server" Text="Submit" CssClass="tb"></asp:Button></td>
</tr>
</table>按以上设置以后,实现检测用户和判断是否为空都正常,在按钮的事件中实现插入数据的时候,都是错的,也会提示插入成功,这要怎么解决???

解决方案 »

  1.   

    <asp:TextBox id="txtUserName" onblur="return ValidateInputData();" runat="server" CssClass="tb">
    服务器端的控件不能这样添加前台的方法的要在后台通过控件的属性Attributes来添加的
      

  2.   

    能说的详细点么?或者给个实例噻我对AJAX不熟悉,第一次使用...谢
      

  3.   

    protected void Page_Load(object sender, EventArgs e)
        {
            TextBox1.Attributes.Add("onblur", "return ValidateInputData();");
        }看下 行吗
    你这样固定判断还不如在前台判断呢
      

  4.   

    你把clsValdate.ValidateInput(txt.value).value 的值弹出来看下
      

  5.   

    TextBox1.Attributes.Add("onblur", "return ValidateInputData();");加了这句,还是不起作用,明明显示用户名已被使用了,但还是提示插入成功~!
      

  6.   

    <asp:Button id="btnSubmit" runat="server" Text="Submit" CssClass="tb"></asp:Button>
    只要插入的时候没判断,这句就插入进去了
      

  7.   

    如何判断?如果所有都在后台判断,那要前台的AJAX不就没用了么?以上实现的只是,不用点击就可以知道输入的是不是可用当点击提交以后,如果输入一切正确就执行插入操作,不正确就显示不正确的项
      

  8.   

    主要是前台AJAX一切正常,就是点击提交以后如何实现跟前台交互
      

  9.   

    [Ajax.AjaxMethod]
    public string ValidateInput(string userName)
    {
    if(userName.Equals("xxx"))
    return "用户名已存在,请选用其它用户名";
    else
    return "用户不存在,可以使用!";
    }
      

  10.   

    或者在提交button里面OnClientClick="return Check
    我都是这样做的,如果感觉不好,直接.disabled = true
    通过以后.disabled = false
    有时候我都这样做
    数据验证不通过,就直接禁用按钮
      

  11.   

    唉,一直没有AJAX实例的开发过,所以说了也不太明白~!只有等哪位好心人开放一下实例了先就这样,结账吧`!
      

  12.   

    给你一个实例吧AjaxPro.2.dll
    我的添加管理员实例
        protected void Page_Load(object sender, EventArgs e)
        {
            AjaxPro.Utility.RegisterTypeForAjax(typeof(Admin_AddAdmin));
    ......
            //Ajax 检查用户焦点应用
            tbxUserName.Attributes.Add("onblur", "JsCheckAdminName()");
        [AjaxPro.AjaxMethod]
        public int CheckAdminName(string AdminName)
        {
            if (AdminName == "")
            {
                return 1;
            }
            else
            {
                //检查数据是否存在,存储过程就自己写了,这个应该很简单的
                int i = Convert.ToInt32(cmd.ExecuteScalar("Ly_ChkAddUserName"));
                if (i > 0)
                {
                    return 1;
                }
                else
                {
                    return 0;
                }
            }
        }
    这里返回1和0,为0则允许注册,为1不允许前台JS处理    function JsCheckAdminName(){
        var ReturnValue=0;
        var AdminName = document.form1.tbxUserName.value.trim(); 
        if(AdminName.length<6||AdminName.length>16||isRegisterUserName(AdminName)==false)
        {
           document.getElementById("lblMsg").innerHTML=""
        }
        else
        {
            document.getElementById("lblMsg").innerHTML="正在检查用户名......"
            ReturnValue=Admin_AddAdmin.CheckAdminName(AdminName).value;
            var msg=document.getElementById("lblMsg");  
            if(ReturnValue == 0)
            {
                msg.innerHTML="该用户名可以使用!";
                document.form1.btnSubmit.disabled = false;//允许保存信息
            }
            else
            {
                msg.innerHTML="对不起,该用户名已经被使用,请重新填写一个用户名";
                document.form1.btnSubmit.disabled = true;//将保存按钮禁用掉
            }
        }   
       }这个应该很简单的了吧
      

  13.   

    JS少了一个
        //校验登录名:只能输入5-20个以字母开头、可带数字、“_”、“.”的字串   
          function isRegisterUserName(s)   
          {   
                var patrn=/^([a-zA-Z0-9]|[._]){6,16}$/;   
                if (!patrn.exec(s)) return false   
                return true   
          }