jQuery-Ajax用户登录功能的实现

 

前几天把jbox源码修改成仿QQ空间模拟窗口后发现有很多人在关注。今天就贴一下我利用该模拟窗口实现的用户登录功能的代码。

ok,先来贴几张张效果图。

TrainLoginDemo.png

 divbox2.png

其中大致流程是用户点击页面右上角的登录链接接着弹出div模拟窗口,该窗口通过iframe调用Login.aspx页面,用户输入用户名

密码和验证码后,Login.aspx页面的jQuery代码post到Login.ashx页面处理,Login.ashx页面可以算是简易的aspx页面吧。

当然你用LoginProcess.aspx 也是可以的。Login.ashx页面处理完把结果返回给Login.aspx页面处理,result变量用与接收结果。

如果返回1表示登录成功,则关闭模拟窗口。

主页面调用代码片段:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
1None.gif<asp:HyperLink ID="lnkLogin" runat="server" NavigateUrl="#" >登录</asp:HyperLink>
2None.gif
3None.gif<script language="javascript" type="text/javascript">
4None.gif$('#<%=this.lnkLogin.ClientID %>').click(
5ExpandedBlockStart.gifContractedBlock.gif                function()dot.gif{
6InBlock.gif                   jBox.open('iframe-jBoxID','iframe','Login.aspx','用户登录
7InBlock.gif','width=400,height=250,center=true,draggable=true,model=true');             
8ExpandedBlockEnd.gif   }
 );
9None.gif</script>

 

Login.aspx代码:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 1None.gif<form id="form1" onsubmit="return false;">
 2None.gif<table id="login-table">            
 3None.gif    <tr>
 4None.gif        <td width="60">学号:</td>
 5None.gif        <td><input class="textbox" type="text" style="width:160px;" id="txtUserName"
 6None.gif maxlength="9"  onblur="checkUserName()" onclick="$.trim(this.value)"/><span></span>
 7None.gif        </td>
 8None.gif    </tr>
 9None.gif    <tr>
10None.gif        <td width="60">密码:</td>
11None.gif        <td><input class="textbox" type="password"  style="width:160px;"  id="txtUserPwd"
  onblur="checkUserPwd()" onclick="$.trim(this.value)" /><span></span>
12None.gif        </td>
13None.gif        </tr>
14None.gif       <tr>
15None.gif        <td width="60">验证码:</td>
16None.gif        <td><input class="textbox" type="text"  style="width:160px;"  maxlength="5"
17None.gif  id="txtCheckCode"  onblur="checkCheckCode()" onclick="$.trim(this.value)"/><span>
18None.gif</span>
19None.gif        </td>
20None.gif        </tr>
21None.gif     <tr>
22None.gif        <td width="60"></td>
23None.gif        <td><div style="color:#808080;">输入下图中的字符,不区分大小写</div><br />
24None.gif        <img src="CheckCode.aspx"  style="vertical-align:middle;" alt="验证码" id="imgCheckCode" />
25None.gif        <href="#" id="change_image">看不清,换一张</a></td>
26None.gif    </tr>
27None.gif    <tr>
28None.gif        <td width="60"></td>        
29None.gif        <td><input type="image" src="App_Themes/Images/btn_login.jpg" id="btnLogin" 
30None.gifalt="马上登录" style="border:0;"/></td>        
31None.gif    </tr>
32None.gif</table>
33None.gif</form>

 

 jQuery代码: 

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 1ExpandedBlockStart.gifContractedBlock.gif<script language="javascript" type="text/javascript" >dot.gif
 2ExpandedSubBlockStart.gifContractedSubBlock.gif$(document).ready(function()dot.gif{
 3InBlock.gif        // 验证码更新
 4InBlock.gif       $('#change_image').click(
 5ExpandedSubBlockStart.gifContractedSubBlock.gif                function()dot.gif{                    
 6InBlock.gif                    $('#imgCheckCode').attr('src','CheckCode.aspx?'+Math.random());
 7ExpandedSubBlockEnd.gif       }
);
 8InBlock.gif       //关键的代码
 9ExpandedSubBlockStart.gifContractedSubBlock.gif     $("#btnLogin").click(function()dot.gif{
10InBlock.gif            if(checkUserName() && checkUserPwd() && checkCheckCode())
11ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
12ExpandedSubBlockStart.gifContractedSubBlock.gif                   var data = dot.gif{
13InBlock.gif                        UserName:  $('#txtUserName').val(),
14InBlock.gif                        UserPwd:   $('#txtUserPwd').val(),
15InBlock.gif                        CheckCode: $('#txtCheckCode').val()
16ExpandedSubBlockEnd.gif                    }
;
17InBlock.gif                  //提交数据给Login.ashx页面处理
18ExpandedSubBlockStart.gifContractedSubBlock.gif                 $.post("Ajax/Login.ashx",data,function(result)dot.gif{
19InBlock.gif                    if(result == "1")   //登录成功
20ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
21InBlock.gif                        alert("登录成功!您可以进行其他操作了!");
22InBlock.gif                         // 关闭模拟窗口
23InBlock.gif                        window.parent.window.jBox.close(); 
24ExpandedSubBlockEnd.gif                    }

25InBlock.gif                    else if(result == "2")   //验证码错误
26ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
27InBlock.gif                         $('#txtCheckCode').next("span").css("color","red").text("*
28InBlock.gif验证码错误");
29ExpandedSubBlockEnd.gif                    }

30InBlock.gif                    else
31ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
32InBlock.gif                        alert("登录失败!请重试");
33ExpandedSubBlockEnd.gif                    }

34ExpandedSubBlockEnd.gif                }
);
35ExpandedSubBlockEnd.gif            }

36InBlock.gif            else
37ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
38InBlock.gif                checkUserName();
39InBlock.gif                checkUserPwd();
40InBlock.gif                checkCheckCode();
41ExpandedSubBlockEnd.gif            }

42ExpandedSubBlockEnd.gif    }
);
43ExpandedSubBlockEnd.gif}
);     
44InBlock.gif
45InBlock.gif    //check the userName
46InBlock.gif    function checkUserName()
47ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
48InBlock.gif        if($("#txtUserName").val().length == 0)
49ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
50InBlock.gif           $("#txtUserName").next("span").css("color","red").text("*用户名不为空");
51InBlock.gif           return false;
52ExpandedSubBlockEnd.gif        }

53InBlock.gif        else
54ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
55InBlock.gif            var reg = /^\d{9}$/;
56InBlock.gif            if(!reg.test($('#txtUserName').val()))
57ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
58InBlock.gif                $('#txtUserName').next("span").css("color","red").text("*正确的格式
59InBlock.gif如:030602888");
60InBlock.gif                return false;
61ExpandedSubBlockEnd.gif            }

62InBlock.gif            else
63ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
64InBlock.gif                  $("#txtUserName").next("span").css("color","red").text("");
65InBlock.gif                  return true;
66ExpandedSubBlockEnd.gif            }

67ExpandedSubBlockEnd.gif        }

68ExpandedSubBlockEnd.gif    }

69InBlock.gif    //check the pwd
70InBlock.gif    function checkUserPwd()
71ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
72InBlock.gif        if($('#txtUserPwd').val().length == 0)
73ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
74InBlock.gif           $('#txtUserPwd').next("span").css("color","red").text("*密码不为空");
75InBlock.gif           return false;
76ExpandedSubBlockEnd.gif        }

77InBlock.gif        else
78ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
79InBlock.gif            $('#txtUserPwd').next("span").css("color","red").text("");
80InBlock.gif            return true;
81ExpandedSubBlockEnd.gif        }

82ExpandedSubBlockEnd.gif    }

83InBlock.gif    // check the check code
84InBlock.gif    function checkCheckCode()
85ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
86InBlock.gif        if($('#txtCheckCode').val().length == 0)
87ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
88InBlock.gif           $('#txtCheckCode').next("span").css("color","red").text("*验证码不为空");
89InBlock.gif           return false;
90ExpandedSubBlockEnd.gif        }

91InBlock.gif        else
92ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
93InBlock.gif            $('#txtCheckCode').next("span").css("color","red").text("");
94InBlock.gif            return true;
95ExpandedSubBlockEnd.gif        }

96ExpandedBlockEnd.gif    }

97None.gif
</script>

 

Login.ashx代码:

 

ContractedBlock.gif ExpandedBlockStart.gif Code
 1None.gifusing System;
 2None.gifusing System.Collections;
 3None.gifusing System.Data;
 4None.gifusing System.Linq;
 5None.gifusing System.Web;
 6None.gifusing System.Web.Services;
 7None.gifusing System.Web.Services.Protocols;
 8None.gifusing System.Xml.Linq;
 9None.gifusing System.Data.SqlClient;
10None.gifusing System.Web.SessionState; //支持session必须的引用
11None.gif
12None.gifnamespace Website.Ajax
13ExpandedBlockStart.gifContractedBlock.gifdot.gif{
14InBlock.gif    [WebService(Namespace = "http://tempuri.org/")]
15InBlock.gif    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
16InBlock.gif    public class Login : IHttpHandler,IRequiresSessionState
17ExpandedSubBlockStart.gifContractedSubBlock.gif    dot.gif{
18InBlock.gif        public void ProcessRequest(HttpContext context)
19ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
20InBlock.gif            context.Response.ContentType = "text/plain";
21InBlock.gif            string checkCode = "";
22InBlock.gif            if (context.Session["checkCode"!= null)
23ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
24InBlock.gif                checkCode =         Convert.ToString(context.Session["checkCode"]).ToLower();
25ExpandedSubBlockEnd.gif            }

26InBlock.gif            if (context.Request.Form["CheckCode"].ToLower() == checkCode)
27ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
28InBlock.gif                using (SqlConnection conn = new 
29InBlock.gifSqlConnection(SqlHelper.StudentConnectionString))
30ExpandedSubBlockStart.gifContractedSubBlock.gif                dot.gif{
31InBlock.gif                    string sql = "select ID,stuNumber,userPassword,realName from 
32InBlock.gift_stuUser where stuNumber=@UserName and userPassword=@UserPwd";
33InBlock.gif                    SqlCommand cmd = new SqlCommand(sql, conn);
34InBlock.gif                    SqlParameter pUserName = cmd.Parameters.Add("@UserName"
35InBlock.gifSqlDbType.VarChar, 30);
36InBlock.gif                    SqlParameter pUserPwd = cmd.Parameters.Add("@UserPwd"
37InBlock.gifSqlDbType.VarChar, 150);
38InBlock.gif                    pUserName.Value = context.Request.Form["UserName"];
39InBlock.gif                    pUserPwd.Value = Common.MD5(context.Request.Form["UserPwd"]);
40InBlock.gif                    conn.Open();
41InBlock.gif                    SqlDataReader sdr = 
42InBlock.gifcmd.ExecuteReader(CommandBehavior.CloseConnection);
43InBlock.gif                    if (sdr.Read())
44ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
45InBlock.gif                        context.Session["UserID"= Convert.ToString(sdr["ID"]);
46InBlock.gif                        context.Session["StuName"= 
47InBlock.gifConvert.ToString(sdr["realName"]);
48InBlock.gif                        context.Session["StuNumber"= 
49InBlock.gifConvert.ToString(sdr["stuNumber"]);
50InBlock.gif                        context.Response.Write("1");    // 登录成功
51ExpandedSubBlockEnd.gif                    }

52InBlock.gif                    else
53ExpandedSubBlockStart.gifContractedSubBlock.gif                    dot.gif{
54InBlock.gif                        context.Response.Write("0"); //登录失败,用户名或密码错误
55ExpandedSubBlockEnd.gif                    }

56ExpandedSubBlockEnd.gif                }

57ExpandedSubBlockEnd.gif            }

58InBlock.gif            else
59ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
60InBlock.gif                context.Response.Write("2");   // 验证码错误
61ExpandedSubBlockEnd.gif            }

62ExpandedSubBlockEnd.gif        }

63InBlock.gif
64InBlock.gif        public bool IsReusable
65ExpandedSubBlockStart.gifContractedSubBlock.gif        dot.gif{
66InBlock.gif            get
67ExpandedSubBlockStart.gifContractedSubBlock.gif            dot.gif{
68InBlock.gif                return false;
69ExpandedSubBlockEnd.gif            }

70ExpandedSubBlockEnd.gif        }

71ExpandedSubBlockEnd.gif    }

72ExpandedBlockEnd.gif}

73None.gif

 

欢迎转载,请注明出处

转载于:https://www.cnblogs.com/fishbin/archive/2009/11/10/1600067.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值