ajax登陆后保持隐藏状态的问题!!!
这里的login登陆是首页的一部分,我想通过ajax实现当登陆成功后,隐藏登陆框,且再刷新时保持隐藏的状态,但在firefox下登陆没有问题,也能保持登陆后login部分隐藏的状态,但在ie,chrome中只能每一次登陆成功,再刷新时无法保持登陆后login部分隐藏的状态。
登陆页面脚本
- JScript code
<script type="text/javascript"> function myAjax() { //做成函数当判断验证成功后,再次调用,以保持隐藏状态 $.post("loginServices.ashx", { username: $('#username').val(), password: $('#password').val() }, function (data, textStatus) { if (data != 0) { $('#username').hide(); $('#password').hide(); $('#message').empty().append("<p>登录成功!</p>"); $('#message').append("<sapn id="logout">注销!</span>"); ...... } else { $('#username').show(); $('#password').show(); $('#message').empty().append("<p>用户密码错误!</p>"); } }); } $(document).ready(function () { $("#mylogin").submit(function () { if (($('#username').val() == "") || ($('#password').val() == "")) { $('#message').append("<p>用户密码不能为空!</p>"); } else { myAjax(); } return false; }); }); </script>后台代码
- C# code
protected void Page_Load(object sender, EventArgs e) { if (User.Identity.IsAuthenticated) { if (!ClientScript.IsStartupScriptRegistered("myscript")) { ClientScript.RegisterStartupScript(this.GetType(), "myscript", "<script type='text/javascript'>myAjax();</script>"); } } }loginServices.ashx服务
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
string name= context.Request.Form["username"].ToString();
string passwd = context.Request.Form["password"].ToString();
if( ..验证成功)
{
FormsAuthentication.SetAuthCookie(name,false);
context.Response.Write("1");
}
else
{
context.Response.Write( "0");
}
}
试着调试loginServices.ashx第一次登陆没有问题,但再刷新时
string name= context.Request.Form["username"].ToString();
string passwd = context.Request.Form["password"].ToString();
name,passwd均为null,页面显示“用户密码错误!”,因为第一次和刷新时都调用myAjax()函数,说明脚本没有问题,请高手指点!!!
[解决办法]
$(document).ready(function () {
$("#mylogin").submit(function () {
if (($('#username').val() == "") || ($('#password').val() == "")) {
$('#message').append("<p>用户密码不能为空!</p>");
}
else {
myAjax();
}
return false;
});
});
为什么每次刷新都试图提交一次?
[解决办法]
我觉得LZ
page_load里面的代码不需要,在登录之后直接将登录的表单框隐藏掉就可以了,
还有,建议LZ在登录的时候刷新下页面,然后页面上加session的判断,如果session存在,就直接显示登录用户的状态,如果不存在,直接显示登陆框。