2012-04-11 74 views
1

我有一个DNN登录/注销控制,它无法正常工作。我想因此使我自己使用JS/JQUERY。检查cookie是否存在使用jquery/js登录注销

当用户在页面上的HTML记录是这样的:

<a href="javascript:__doPostBack('dnn$dnnLOGIN$cmdLogin','')" class="SkinObject" id="dnn_dnnLOGIN_cmdLogin">Logout</a> 

,当他们被“注销”它看起来像这样:

<a href="javascript:__doPostBack('dnn$dnnLOGIN$cmdLogin','')" class="SkinObject" id="dnn_dnnLOGIN_cmdLogin">Login</a> 
  • 我想要检查cookie是否已经设置,如果它有 显示注销链接,并且它没有显示登录链接。

  • 点击登录会检查cookie是否存在(应显示为登录 )并将它们带到登录页面。

  • 点击注销应该删除cookie并刷新页面 ,然后页面会再次更改链接回到“登录”,因为没有找到cookie。

我用这个作为一个例子指南:http://jsfiddle.net/MadLittleMods/73vzD/

这是我迄今所做的:

HTML:

<a id="dnn_dnnLOGIN_cmdLogin" href="Login"> 
    Login 
</a> 

|| 

<a id="dnn_dnnLOGIN_cmdLogin" href="Logoff"> 
    Logoff 
</a> 

<br /> 

<a id="see" href="#"> 
    see 
</a> 

JS:

//set the cookie once user has logged in 
//for testing purposes clicking login should set the cookie to 1 
//clicking on Logoff 'should' set the cookie to 0 
$('#dnn_dnnLOGIN_cmdLogin').live('click', function() { 
    var action = $(this).attr('href'); 
    var cookie_value = (action == 'Login') ? 1 : null; 

    $.cookie('DNN-COOKIE', cookie_value); 

    return false; 
}); 

// clicking on 'see' should bring up an alert box display the cookie value of 1 or 0 
$('#see').live('click', function() { 

    alert($.cookie('DNN-COOKIE')); 

    return false; 
}); 
+0

我得到 “{”错误“:”请使用PO ST请求“}”在jsfiddle这似乎是因为它没有服务器发布。原来的例子似乎工作,我的执行does not ..:S – 2012-04-11 08:41:20

回答

1

Cookie的演示工作得很好。它似乎忘了包含插件。

看到一个工作一个here


更新:

您可以检查一个cookie的预先存在这样

var preval = $.cookie('cookie-name'); 
if(preval != null) { 
    //... 
} 

Demo

+0

谢谢..这是一个问题的方式。我需要做一个IF语句来检查cookie是否存在,然后隐藏登录链接。 – 2012-04-11 11:54:56

+0

谢谢我发现了原来的问题,我没有实现jquery。 ps:你曾经去过大本营吗? – 2012-04-11 12:24:39

+0

@ sp-1986,不,迄今为止不幸。但下次你在尼泊尔时,我们正在开会。 – Starx 2012-04-11 12:26:27