如何使用jQuery基于Beaker会话状态显示div?

时间:2013-11-23 04:05:30

标签: jquery bottle beaker

通过jQuery Ajax将内容加载到main_content区域。

main_content区域之外是login个链接。

点击此链接会在main_content区域中加载一个表单,该表单在提交时会使用Beaker执行登录授权。成功后,会在main_content区域中加载管理页面。

我想在成功授权后将login链接更改为logout链接。

有没有办法根据Beaker中的会话状态显示/隐藏div,例如:

if (beaker.session.id) {
    $('#login').hide();
    $('#logout').show();
}

我会在处理成功登录的jQuery块中调用它,然后在处理logout的块中交换div。

修改

在Firebug中,在登录POST回复中,我转到"Cookies" > "Received Cookies",可以查看以下列表:

beaker.session.id

如果我右键单击此链接并选择"Use in Command Line",则会在命令行区域弹出以下内容:

$p

如果我在Firebug命令行区域中运行以下命令,则会弹出一条包含指定消息的警告:

if ($p) {alert("you have an id!")}

所以我尝试将此添加到处理登录的代码中但我没有收到警报:

<script>
$(document).on("submit","#login", function (e) {
e.preventDefault();
$.ajax({
type: 'POST',
url: '/login',
data: $(this).serialize(),
dataType: 'json',
success: function(results) {
$("#main_content").html("");
$("#main_content").append(results.content);
href = results.title;
history.pushState('', 'New URL: '+href, href);
reinit1();
reinit2();
reinit3();
if ($p) { // <-- here is the alert
alert("Yes you have an ID!")
}
}
});
});
</script>

我收到错误:

ReferenceError: $p is not defined

1 个答案:

答案 0 :(得分:0)

我无法找到关于如何访问beaker.session.id cookie的解决方案,所以我刚刚在登录成功时创建了jQuery cookie,然后创建了一个if语句,显示了{{ 1}}如果新创建的登录存在则链接(并且我会在注销时删除cookie以反转该过程):

logout