AsyncData.ashx文件
public void ProcessRequest (HttpContext context) {
string action = context.Request.QueryString["action"];//getcity,getstore
string arg = context.Request.QueryString["arg"];// areaGUID,
string pwd = context.Request.QueryString["pwd"];//user login password
StringBuilder strResult = new StringBuilder();
if (action == "userLogin")
{
Model.BJ_UserInfo userModel = new Model.BJ_UserInfo();
BLL.BJ_User userBll = new BLL.BJ_User();
UserInfo ui = new UserInfo();
if (string.IsNullOrEmpty(arg) || string.IsNullOrEmpty(pwd))
return;
else
userModel = userBll.GetModel(arg, WebUtility.GetMD5(pwd));
if (userModel != null)
{
ui.UserGUID = userModel.UserGUID.ToString();
ui.UserName = userModel.UserName;
ui.RealName = userModel.RealName;
ui.SecurityGUID = userModel.SecurityGUID.ToString();
//ui.IP = WebUtility.GetIpAddress;
//ui.StoreName = IpLocation(ui.IP);
context.Session["userinfo"] = ui;
strResult.Append(ui.UserName);
}
else
strResult.AppendFormat("0");
}
}
CheckLogin.js文件
//---------------------javascript-------------------------------
jQuery(function($){
$("#btnLogin").click(function(){
var target1 = $("#txtUserName");
var target2 = $("#txtPwd");
if(target1.val()=='')
{
alert('用户名不能为空!');
return;
}
if(target2.val()=='')
{
alert('密码不能为空!');
return;
}
else
funAjaxText("userLogin", target1.val(), target2.val());
});
var funAjaxText = function(action, username,pwd){
$.ajax({
type: "GET",
url: "../Controls/AsyncData.ashx?action="+ action +"&arg="+username+"&pwd="+pwd,
beforeSend: function(data){
},
success: function(data){
if(data=="0")
{
$("#txtPwd").val("");
alert("用户名或密码有误!");
}
else
{
window.location.href="MyBJ/MyBJ.aspx";
}
}
});
};
});
首页用户登录,进行退出时,清空当前会话
Session.Clear();
Session.Abandon();
Response.Redirect("index.aspx");
并跳转到前页(刷新),
再次登录时,登录成功,跳转到mybj.aspx页面
page_load()
{
UserInfo userModel = new UserInfo();
userModel = (UserInfo)Session["userinfo"];
if (userModel == null)
{
WebUtility.ShowMessageAndRedirect("你还没有登录!","../index.aspx", this.Page);
}
}
会出现,session["userinfo"]为空的情况。
这里的问题是缓存,
解决方法是在进行异步数据请求时,加多一个随机数,以使此请求不同于前,于是才不会去读取缓存。
url: "../Controls/AsyncData.ashx?action="+ action +"&arg="+username+"&pwd="+pwd+"&update="+Math.random(),