最近刚做了一个时下比较流行的隐藏层录页面,登录过程使用了ajax,但是奇怪的是,程序运行到添加cookies时就无端终止了,郁闷..跟踪无果,网上查询亦无果,无奈下只有借用javascript的cookies,用户登录过程是ajax验证完成后,返回正确标记同时返回登录的用户名ID,这样就可以在javascript中实现这样的效果。
这个登录框完全效仿baidu知道的登录模式,唯一的不同点是百度知道的登录框调用了一个页面,其实就是使用一个iframe框架而已,基本类似。
最近刚做了一个时下比较流行的隐藏层录页面,登录过程使用了ajax,但是奇怪的是,程序运行到添加cookies时就无端终止了,郁闷..跟踪无果,网上查询亦无果,无奈下只有借用javascript的cookies,用户登录过程是ajax验证完成后,返回正确标记同时返回登录的用户名ID,这样就可以在javascript中实现这样的效果。
这个登录框完全效仿baidu知道的登录模式,唯一的不同点是百度知道的登录框调用了一个页面,其实就是使用一个iframe框架而已,基本类似。
这里将整个登录过程代码贴出:
前台页面:
<!-----层登录模块开始----->
<p onClick="sAlert('login','登录');">
<asp:Literal ID="litStatus" Text="登录" runat="server"></asp:Literal></p>
<p onClick="logout();">
<asp:Literal ID="litLoginout" Visible=false Text="退出" runat="server"></asp:Literal></p>
<!------层登录模块结束---->
javascript相关程序:
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
Code
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
function sAlert(str,stitle)
{
var msgw,msgh,bordercolor;
msgw=300;//提示窗口的宽度
msgh=200;//提示窗口的高度
titleheight=25 //提示窗口标题高度
bordercolor="#78B664";//提示窗口的边框颜色
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
var sWidth,sHeight;
sWidth=document.body.offsetWidth;//浏览器工作区域内页面宽度
sHeight=screen.height;//屏幕高度(垂直分辨率)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
//背景层(大小与窗口有效区域相同,即当弹出对话框时,背景显示为放射状透明灰色)
var bgObj=document.createElement("div");//创建一个div对象(背景层)
//定义div属性,即相当于
//<div id="bgDiv" style="position:absolute; top:0; background-color:#777; filter:progid:DXImagesTransform.Microsoft.Alpha(style=3,opacity=25,finishOpacity=75); opacity:0.6; left:0; width:918px; height:768px; z-index:10000;"></div>
bgObj.setAttribute('id','bgDiv');
bgObj.style.position="absolute";
bgObj.style.top="0";
bgObj.style.background="#777";
bgObj.style.filter="progid:DXImageTransform.Microsoft.Alpha(style=0,opacity=10,finishOpacity=75";
bgObj.style.opacity="1";
bgObj.style.left="0";
bgObj.style.width=sWidth + "px";
bgObj.style.height=sHeight*2 + "px";
bgObj.style.zIndex = "10000";
document.body.appendChild(bgObj);//在body内添加该div对象
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
var msgObj=document.createElement("div")//创建一个div对象(提示框层)
//定义div属性,即相当于
//<div id="msgDiv" align="center" style="background-color:white; border:1px solid #336699; position:absolute; left:50%; top:50%; font:12px/1.6em Verdana,Geneva,Arial,Helvetica,sans-serif; margin-left:-225px; margin-top:npx; width:400px; height:100px; text-align:center; line-height:25px; z-index:100001;"></div>
msgObj.setAttribute("id","msgDiv");
msgObj.setAttribute("align","center");
msgObj.style.background="white";
msgObj.style.border="1px solid " + bordercolor;
msgObj.style.position = "absolute";
msgObj.style.left = "50%";
msgObj.style.top = "20%";
msgObj.style.font="12px/1.6em Verdana, Geneva, Arial, Helvetica, sans-serif";
msgObj.style.marginLeft = "-225px" ;
msgObj.style.marginTop = -75+document.documentElement.scrollTop+"px";
msgObj.style.width = msgw + "px";
msgObj.style.height =msgh + "px";
msgObj.style.textAlign = "center";
msgObj.style.lineHeight ="25px";
msgObj.style.zIndex = "10001";
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
var title=document.createElement("h4");//创建一个h4对象(提示框标题栏)
//定义h4的属性,即相当于
//< h4 id="msgTitle" align="right" style="margin:0; padding:3px; background-color: #336699; filter:progid:DXImageTransform.Microsoft.Alpha(startX=20, startY =20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100); opacity: 0.75; border:1px solid #336699; height:18px; font:12px Verdana,Geneva,Arial, Helvetica,sans-serif; color:white; cursor:pointer;" onclick="">关闭< /h4>
title.setAttribute("id","msgTitle");
title.setAttribute("align","right");
title.style.margin="0";
title.style.padding="3px";
title.style.background=bordercolor;
title.style.filter="progid:DXImageTransform.Microsoft.Alpha(startX=20, startY=20, finishX=100, finishY=100,style=1,opacity=75,finishOpacity=100);";
title.style.opacity="0.75";
title.style.border="1px solid " + bordercolor;
title.style.height="18px";
title.style.font="12px Verdana, Geneva, Arial, Helvetica, sans-serif";
title.style.color="white";
title.style.cursor="pointer";
title.innerHTML="关闭";
title.onclick=removeObj;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
var button=document.createElement("input");//创建一个input对象(提示框按钮)
//定义input的属性,即相当于
//<input type="button" align="center" style="width:100px; align:center; margin-left:250px; margin-bottom:10px;" value="关闭">
button.setAttribute("type","button");
button.setAttribute("value","关闭");
button.style.width="60px";
button.style.align="center";
button.style.marginLeft="250px";
button.style.marginBottom="10px";
button.style.background=bordercolor;
button.style.border="1px solid "+ bordercolor;
button.style.color="white";
button.onclick=removeObj;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
var button1=document.createElement("input");//创建一个input对象(提示框按钮)
//定义input的属性,即相当于
button1.setAttribute("type","button");
button1.setAttribute("value","登录");
button1.style.width="60px";
button1.style.align="center";
button1.style.marginLeft="250px";
button1.style.marginBottom="10px";
button1.style.background=bordercolor;
button1.style.border="1px solid "+ bordercolor;
button1.style.color="white";
button1.onclick=login;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
function removeObj()
{//点击标题栏触发的事件
document.body.removeChild(bgObj);//删除背景层Div
document.getElementById("msgDiv").removeChild(title);//删除提示框的标题栏
document.body.removeChild(msgObj);//删除提示框层
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
function login()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedSubBlock.gif)
{
var strUserName=document.getElementById("username").value;
var strPass=document.getElementById("pass").value;
test.UserLogin(strUserName,strPass,loginUser_callback);
}
function loginUser_callback(response)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
if(response.value=="0")
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
alert("登录成功!");
removeObj();
SetCookie ("userID", "3")
window.location.reload();
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
alert("登录失败!");
}
}
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
document.body.appendChild(msgObj);//在body内添加提示框div对象msgObj
document.getElementById("msgDiv").appendChild(title);//在提示框div中添加标题栏对象title
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
var txt=document.createElement("p");//创建一个p对象(提示框提示信息)
//定义p的属性,即相当于
//<p style="margin:1em 0;" id="msgTxt">测试效果</p>
txt.style.margin="1em 0"
txt.setAttribute("id","msgTxt");
txt.innerHTML="<strong>国际糖尿病注册用户请直接登录</strong></br></br>用户名:<input id='username' width='170' name='username' /><br></br>密 码:<input id='pass' type='PassWord' width='170' name='pass' /></br></br>";//来源于函数调用时的参数值
document.getElementById("msgDiv").appendChild(txt);//在提示框div中添加提示信息对象txt
document.getElementById("msgDiv").appendChild(button1);
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
function SetCookie(name,value)//两个参数,一个是cookie的名子,一个是值
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
var Days = 30; //此 cookie 将被保存 30 天
var exp = new Date(); //new Date("December 31, 9998");
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getCookie(name)//取cookies函数
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
}
function delCookie(name)//删除cookie
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null) document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
![](https://www.cnblogs.com/Images/OutliningIndicators/None.gif)
function logout()
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](https://www.cnblogs.com/Images/OutliningIndicators/ContractedBlock.gif)
{
delCookie("userID");
window.location.reload();
}
CS层,ajax执行方法:
[Ajax.AjaxMethod]
public string UserLogin(string userName, string passWord)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedBlockStart.gif)
{
TNB.DAL.CommonDAL dal = new TNB.DAL.CommonDAL();
TNB.Model.CommonModel model = new TNB.Model.CommonModel();
model.Fields = "*";
model.Where = "UserName='" + userName + "' and UserPass='" + System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(passWord, "MD5") + "'";
model.Tables = "Users";
DataSet ds = dal.GetList(model);
if (ds.Tables[0].Rows.Count > 0)
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
![](https://www.cnblogs.com/Images/OutliningIndicators/InBlock.gif)
return "0";
}
else
![](https://www.cnblogs.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
{
return "1";
}
}