jQuery+Ajax用戶登錄功能的實(shí)現(xiàn)
ok,先來貼幾張張效果圖。
其中大致流程是用戶點(diǎn)擊頁面右上角的登錄鏈接接著彈出div模擬窗口,該窗口通過iframe調(diào)用Login.aspx頁面,用戶輸入用戶名
密碼和驗(yàn)證碼后,Login.aspx頁面的jQuery代碼post到Login.ashx頁面處理,Login.ashx頁面可以算是簡(jiǎn)易的aspx頁面吧。
當(dāng)然你用LoginProcess.aspx 也是可以的。Login.ashx頁面處理完把結(jié)果返回給Login.aspx頁面處理,result變量用與接收結(jié)果。
如果返回1表示登錄成功,則關(guān)閉模擬窗口。
主頁面調(diào)用代碼片段:
<asp:HyperLink ID="lnkLogin" runat="server" NavigateUrl="#" >登錄</asp:HyperLink>
<script language="javascript" type="text/javascript">
$('#<%=this.lnkLogin.ClientID %>').click(
function(){
jBox.open('iframe-jBoxID','iframe','Login.aspx','用戶登錄
','width=400,height=250,center=true,draggable=true,model=true');
} );
</script>
Login.aspx代碼:
<form id="form1" onsubmit="return false;">
<table id="login-table">
<tr>
<td width="60">學(xué)號(hào):</td>
<td><input class="textbox" type="text" style="width:160px;" id="txtUserName"
maxlength="9" onblur="checkUserName()" onclick="$.trim(this.value)"/><span></span>
</td>
</tr>
<tr>
<td width="60">密碼:</td>
<td><input class="textbox" type="password" style="width:160px;" id="txtUserPwd"
onblur="checkUserPwd()" onclick="$.trim(this.value)" /><span></span>
</td>
</tr>
<tr>
<td width="60">驗(yàn)證碼:</td>
<td><input class="textbox" type="text" style="width:160px;" maxlength="5"
id="txtCheckCode" onblur="checkCheckCode()" onclick="$.trim(this.value)"/><span>
</span>
</td>
</tr>
<tr>
<td width="60"></td>
<td><div style="color:#808080;">輸入下圖中的字符,不區(qū)分大小寫</div><br />
<img src="CheckCode.aspx" style="vertical-align:middle;" alt="驗(yàn)證碼" id="imgCheckCode" />
<a href="#" id="change_image">看不清,換一張</a></td>
</tr>
<tr>
<td width="60"></td>
<td><input type="image" src="App_Themes/Images/btn_login.jpg" id="btnLogin"
alt="馬上登錄" style="border:0;"/></td>
</tr>
</table>
</form>
jQuery代碼:
<script language="javascript" type="text/javascript" >
$(document).ready(function(){
// 驗(yàn)證碼更新
$('#change_image').click(
function(){
$('#imgCheckCode').attr('src','CheckCode.aspx?'+Math.random());
});
//關(guān)鍵的代碼
$("#btnLogin").click(function(){
if(checkUserName() && checkUserPwd() && checkCheckCode())
{
var data = {
UserName: $('#txtUserName').val(),
UserPwd: $('#txtUserPwd').val(),
CheckCode: $('#txtCheckCode').val()
};
//提交數(shù)據(jù)給Login.ashx頁面處理
$.post("Ajax/Login.ashx",data,function(result){
if(result == "1") //登錄成功
{
alert("登錄成功!您可以進(jìn)行其他操作了!");
// 關(guān)閉模擬窗口
window.parent.window.jBox.close();
}
else if(result == "2") //驗(yàn)證碼錯(cuò)誤
{
$('#txtCheckCode').next("span").css("color","red").text("*
驗(yàn)證碼錯(cuò)誤");
}
else
{
alert("登錄失?。≌?qǐng)重試");
}
});
}
else
{
checkUserName();
checkUserPwd();
checkCheckCode();
}
});
});
//check the userName
function checkUserName()
{
if($("#txtUserName").val().length == 0)
{
$("#txtUserName").next("span").css("color","red").text("*用戶名不為空");
return false;
}
else
{
var reg = /^\d{9}$/;
if(!reg.test($('#txtUserName').val()))
{
$('#txtUserName').next("span").css("color","red").text("*正確的格式
如:030602888");
return false;
}
else
{
$("#txtUserName").next("span").css("color","red").text("");
return true;
}
}
}
//check the pwd
function checkUserPwd()
{
if($('#txtUserPwd').val().length == 0)
{
$('#txtUserPwd').next("span").css("color","red").text("*密碼不為空");
return false;
}
else
{
$('#txtUserPwd').next("span").css("color","red").text("");
return true;
}
}
// check the check code
function checkCheckCode()
{
if($('#txtCheckCode').val().length == 0)
{
$('#txtCheckCode').next("span").css("color","red").text("*驗(yàn)證碼不為空");
return false;
}
else
{
$('#txtCheckCode').next("span").css("color","red").text("");
return true;
}
}
</script>
Login.ashx代碼:
using System;
using System.Collections;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Data.SqlClient;
using System.Web.SessionState; //支持session必須的引用
namespace Website.Ajax
{
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
public class Login : IHttpHandler,IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string checkCode = "";
if (context.Session["checkCode"] != null)
{
checkCode = Convert.ToString(context.Session["checkCode"]).ToLower();
}
if (context.Request.Form["CheckCode"].ToLower() == checkCode)
{
using (SqlConnection conn = new
SqlConnection(SqlHelper.StudentConnectionString))
{
string sql = "select ID,stuNumber,userPassword,realName from
t_stuUser where stuNumber=@UserName and userPassword=@UserPwd";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlParameter pUserName = cmd.Parameters.Add("@UserName",
SqlDbType.VarChar, 30);
SqlParameter pUserPwd = cmd.Parameters.Add("@UserPwd",
SqlDbType.VarChar, 150);
pUserName.Value = context.Request.Form["UserName"];
pUserPwd.Value = Common.MD5(context.Request.Form["UserPwd"]);
conn.Open();
SqlDataReader sdr =
cmd.ExecuteReader(CommandBehavior.CloseConnection);
if (sdr.Read())
{
context.Session["UserID"] = Convert.ToString(sdr["ID"]);
context.Session["StuName"] =
Convert.ToString(sdr["realName"]);
context.Session["StuNumber"] =
Convert.ToString(sdr["stuNumber"]);
context.Response.Write("1"); // 登錄成功
}
else
{
context.Response.Write("0"); //登錄失敗,用戶名或密碼錯(cuò)誤
}
}
}
else
{
context.Response.Write("2"); // 驗(yàn)證碼錯(cuò)誤
}
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
- jquery 彈出登錄窗口實(shí)現(xiàn)代碼
- PHP+jQuery+Ajax實(shí)現(xiàn)用戶登錄與退出
- jquery ajax 登錄驗(yàn)證實(shí)現(xiàn)代碼
- 基于jquery ajax 用戶無刷新登錄方法詳解
- 基于Jquery+div+css實(shí)現(xiàn)彈出登錄窗口(代碼超簡(jiǎn)單)
- JQuery記住用戶名密碼實(shí)現(xiàn)下次自動(dòng)登錄功能
- 使用Jquery打造最佳用戶體驗(yàn)的登錄頁面的實(shí)現(xiàn)代碼
- javascript和jquery實(shí)現(xiàn)用戶登錄驗(yàn)證
- jQuery實(shí)現(xiàn)彈出窗口中切換登錄與注冊(cè)表單
- jQuery實(shí)現(xiàn)簡(jiǎn)單登錄條件判斷
相關(guān)文章
.NET+JS對(duì)用戶輸入內(nèi)容進(jìn)行字?jǐn)?shù)提示功能的實(shí)例代碼
.NET+JS對(duì)用戶輸入內(nèi)容進(jìn)行字?jǐn)?shù)提示功能的實(shí)例代碼,需要的朋友可以參考一下2013-06-06.net采用ajax實(shí)現(xiàn)郵箱注冊(cè)和地區(qū)選擇實(shí)例
這篇文章主要介紹了.net采用ajax實(shí)現(xiàn)郵箱注冊(cè)和地區(qū)選擇的方法,以實(shí)例形式詳細(xì)講述了.net采用ajax的技巧,非常實(shí)用,需要的朋友可以參考下2014-10-10asp.net實(shí)現(xiàn)的MVC跨數(shù)據(jù)庫多表聯(lián)合動(dòng)態(tài)條件查詢功能示例
這篇文章主要介紹了asp.net實(shí)現(xiàn)的MVC跨數(shù)據(jù)庫多表聯(lián)合動(dòng)態(tài)條件查詢功能,結(jié)合實(shí)例形式較為詳細(xì)分析了asp.net基于MVC架構(gòu)的跨數(shù)據(jù)庫多表聯(lián)合查詢功能實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-02-02Asp.net mvc在view中用C#代碼動(dòng)態(tài)創(chuàng)建元素
這篇文章主要給大家介紹了關(guān)于Asp.net mvc如何在view中用C#代碼動(dòng)態(tài)創(chuàng)建元素的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03ASP.NET Web API如何將注釋自動(dòng)生成幫助文檔
本篇文章主要介紹了ASP.NET Web API從注釋自動(dòng)生成幫助文檔的方法,功能很是強(qiáng)大,現(xiàn)與大家分享一下,需要的朋友可以參考下2015-07-07C# javaScript函數(shù)的相互調(diào)用
如何在JavaScript訪問C#函數(shù),如何在C#中訪問JavaScript的已有變量等實(shí)現(xiàn)方法2008-12-12ASP.NET頁面請(qǐng)求超時(shí)時(shí)間設(shè)置多種方法
這篇文章主要為大家詳細(xì)介紹了ASP.NET頁面請(qǐng)求超時(shí)時(shí)間設(shè)置Server.ScriptTimeOut executionTimeout多種方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-09-09