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

摘要:
今天,我将发布使用此模拟窗口实现的用户登录功能的代码。一般过程是用户单击页面右上角的登录链接,然后弹出div模拟窗口。此窗口通过iframe调用Login.aspx页面。用户输入用户名、密码和验证码后,Login.aspx页面的jQuery代码将发布到Login.ashx页面进行处理。Login.ashx页面可以看作是一个简单的aspx页面。如果返回1表示成功登录,请关闭模拟窗口。“+Math.random());});//键代码$.click(function(){if(checkUserName()&&checkUserPwd()&&checkCheckCode())){vardata={UserName:$('#txtUserName').val(),UserPwd:$('#txtUserPwd').var(),CheckCode:$('#txtCheckCode').vl()}//将数据提交到Login.ashx页面以处理$.post(”Ajax/Login.ashx“,数据,函数(result){if(result=”1“)//登录成功{alert(”登录成功!

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

 jQuery+Ajax用户登录功能的实现第1张

jQuery+Ajax用户登录功能的实现第2张


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


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

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


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


主页面调用代码片段:


复制代码 代码如下:
<asp:HyperLink 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 onsubmit="return false;">
<table id="login-table">
<tr>
<td width="60">学号:</td>
<td><input type="text"
maxlength="9" onblur="checkUserName()" onclick="$.trim(this.value)"/><span></span>
</td>
</tr>
<tr>
<td width="60">密码:</td>
<td><input type="password"
onblur="checkUserPwd()" onclick="$.trim(this.value)" /><span></span>
</td>
</tr>
<tr>
<td width="60">验证码:</td>
<td><input type="text" maxlength="5"
onblur="checkCheckCode()" onclick="$.trim(this.value)"/><span>
</span>
</td>
</tr>
<tr>
<td width="60"></td>
<td><div style="color:#808080;">输入下图中的字符,不区分大小写</div><br />
<img src="http://t.zoukankan.com/CheckCode.aspx" alt="验证码" />
<a href="http://t.zoukankan.com/superfeeling-p-2325124.html#" id="change_image">看不清,换一张</a></td>
</tr>
<tr>
<td width="60"></td>
<td><input type="image" src="http://t.zoukankan.com/App_Themes/Images/btn_login.jpg"
alt="马上登录" /></td>
</tr>
</table>
</form>

jQuery代码:
复制代码 代码如下:
<script language="javascript" type="text/javascript" >
$(document).ready(function(){
// 验证码更新
$('#change_image').click(
function(){
$('#imgCheckCode').attr('src','CheckCode.aspx?'+Math.random());
});
//关键的代码
$("#btnLogin").click(function(){
if(checkUserName() && checkUserPwd() && checkCheckCode())
{
var data = {
UserName: $('#txtUserName').val(),
UserPwd: $('#txtUserPwd').val(),
CheckCode: $('#txtCheckCode').val()
};
//提交数据给Login.ashx页面处理
$.post("Ajax/Login.ashx",data,function(result){
if(result == "1") //登录成功
{
alert("登录成功!您可以进行其他操作了!");
// 关闭模拟窗口
window.parent.window.jBox.close();
}
else if(result == "2") //验证码错误
{
$('#txtCheckCode').next("span").css("color","red").text("*
验证码错误");
}
else
{
alert("登录失败!请重试");
}
});
}
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("*验证码不为空");
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"); //登录失败,用户名或密码错误
}
}
}
else
{
context.Response.Write("2"); // 验证码错误
}
}

public bool IsReusable
{
get
{
return false;
}
}
}
}

免责声明:文章转载自《jQuery+Ajax用户登录功能的实现》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇php pack、unpack、ord 函数使用方法用UILocalNotification实现一个闹钟(Swift)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Flask-爱家租房项目ihome-01-项目框架的搭建

项目介绍 该项目是一个简易版的租房平台项目, 房东可以在平台上发布自己的房源, 房客可以搜索心仪的房源并进行一定时间的租赁. 主要功能模块包括用户模块(注册/登录/个人信息), 租房首页, 房屋列表页,房屋详情页, 房屋预订页, 支付宝支付等. 该项目属于不完全的前后端分离, 前端使用的是html+css+jquery, 后端使用的是flask框架, 后端...

jsp、javabean、el

JSP三大指令一个jsp页面中,可以有0~N个指令的定义!1. page --> 最复杂:<%@page language="java" info="xxx"...%>* pageEncoding和contentType:> pageEncoding:它指定当前jsp页面的编码,只要不说谎,就不会有乱码!在服务器要把jsp编译成.j...

spring相关的问题和原因分析

1、Bean的初始化顺序导致的项目启动失败 现象:shua-video项目中引用了配置中台bp-config的SDK,然后在mq消息监听类中使用。如上使用方式,在waterService中引用了bp-config。在测试环境mq中没有消息消费时项目能正常启动,但在线上有消息消费时项目启动报错,提示找不到bp-config类。 @Component @Slf...

android开发学习 ------- 自定义View 圆 ,其点击事件 及 确定当前view的层级关系

我需要实现下面的效果:   参考文章:https://blog.csdn.net/halaoda/article/details/78177069 涉及的View事件分发机制 https://www.jianshu.com/p/38015afcdb58  (最全面的原理性文章)    https://www.jianshu.com/p/e99b5e8bd6...

WINDOWS session管理初识2

前置知识:同一个Session的进程的eprocess->session指向的值都是一样 在1中,我们知道smss.exe创建新的session,然后启动新的csrss.exe和winlogon.exe。 它的管理是这样的 //先看一个宏定义 #define SESSION_GLOBAL(_Session) (_Session->GlobalV...

远程桌面mstsc应用

        当我们需要远程使用电脑或者服务器的时候,我们会选择使用远程桌面。但是,在多人使用远程桌面的时候。经常会遇到“客户端已达到最大连接数,请稍候再试”。原因解释:       如果是多个人管理的服务器的话,您可能会感觉这是很正常的现象。其实,则不然。以下将介绍Windows2003 Server中远程桌面的相关限制以及规定:           ...