为何不停地alert()弹出窗口

icod 2010-11-17 06:47:24
需要是这样,一开始加载页面,页面上的指定连接不能使用,必须登陆后才能打开。下面的代码模拟了这个场景,

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {

$('a').click(function () {
alert("111登陆后再查阅!");
return false;
})

//下面的js将替换这段,替换标记ccc
$('#btnlogin').click(function () {
$('a').unbind('click');
$('#message').show();
var data = "<strong>ajax</strong>:欢迎回来![<a href='Logout.asp'>注销</a>]";
var a = $('#message').empty().append(data).find('a[href$=Logout.asp]');
//alert(a[0]);
$(a[0]).click(function (event) {
event.preventDefault();
$('#message').hide();
$('a').click(function () {
alert("222登陆后再查阅!");
return false;
});
});
});
});
</script>
</head>
<body>
<div>
<ul>
<li><a href="http://www.sina.com">Pro Silverlight 4 in C#</a></li>
<li><a href="http://www.163.com">Microsoft Windows Workflow </a></li>
<li><a href="http://www.qq.com">Unity 3D Game Development ByExample</a></li>
</ul>
<p><input id="btnlogin" type="button" value="登陆" /></p>
<p id="message">
</p>
</div>
</body>
</html>


但是我现在现在替换成,登陆,注销都通过ajax的方式后,登陆前连接不起作用,登陆后能打开连接,但注销后,就会不停 弹出窗口
这段代码简化如下:

//替换上面标记ccc的js
$("#userlogin").submit(function () {
$.post("/xx/Checkuser.asp",{
username : $('#username').val(),
password : $('#password').val()
},function (data,textStatus) {
if (data != 0) {
$('a').unbind('click');
var a=$('#message').append(data).find('a[href$=Logout.asp]');
$(a[0]).click(function(event) {
event.preventDefault();
$.get("/xx/Logout.asp",function(data,textStatus) {
if (data == 1) {
$('#message').removeClass().empty().hide();
}
});
});
}

});
return false;
});

chechuser.asp也很简单,认证成功就输出类似这个html:<strong>ajax</strong>:欢迎回来![<a href='Logout.asp'>注销</a>]
Logout.asp 很简单,就是清空session
另外,如果刷新后无法保存登陆后的状态!!请高手指点!!
...全文
480 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
icod 2010-11-18
  • 打赏
  • 举报
回复
不好意思,是我贴代码的时候疏忽了,你上面的代码和我写的是相似的,问题就是出现在我注销后,再绑定 click事件,就会不停地alert()弹出窗口

真实代码是一开始
$('#center a:not(#soft a)').click(function(){ alert("111请登陆后查阅!"); return false;});

之后,登陆成功$('#center a:not(#soft a)').unbind('click');
注销时,我再重新绑定$('#center a:not(#soft a)').click(function(){ alert("222请登陆后查阅!"); return false;}); 后就会不断 alert 222请登陆的窗口,我试验了一下,只要换成

$('#soft a').click(function(){ alert("222请登陆后查阅!"); return false;}); 这块区域就没有问题,但我想要$('#center a:not(#soft a)')这一块.
  • 打赏
  • 举报
回复
你没有在登录成功的时候重新设置连接click的return ture或者false,注销的时候也没有处理click。

而且你要限定好a的位置,要不你直接$('a'),如果页面还要其他的链接就会一起限制了。
$(document).ready(function () {

$('ul a').click(function () {//限定得更加细一些
alert("111登陆后再查阅!");
return false;
})

$("#userlogin").submit(function () {
$.post("/xx/Checkuser.asp", {
username: $('#username').val(),
password: $('#password').val()
}, function (data, textStatus) {
if (data != 0) {
$('ul a').unbind('click'); //移除事件,使链接可用。

var a = $('#message').append(data).find('a[href$=Logout.asp]');
$(a[0]).click(function (event) {
event.preventDefault();
$.get("/xx/Logout.asp", function (data, textStatus) {
if (data == 1) {
$('#message').removeClass().empty().hide();
$('ul a').click(function () {//再次添加事件,使链接不可用
alert("222登陆后再查阅!");
return false;
});
}
});
});
}

});
return false;
});


});


没有保存状态是因为通过js设置的内容刷新后是保存不了,刷新后就么有了

你需要在$(document).ready中发送ajax请求服务器页面判断下session是否存在,存在则返回1,否则返回0,然后ajax根据返回的内容重新设置客户端的状态
icod 2010-11-18
  • 打赏
  • 举报
回复
郁闷.....

52,780

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧