2012-05-29 60 views
1

我目前在我的导航区域有一个<ul>,它包含一个<%= render :partial => "sessions/manager" %>,它基本上调用另一个部分,这取决于用户登录状态呈现登录表单或欢迎声明。根据登录状态更新DIV?

我的登录部分由ajx驱动,因此自动刷新。这是我使用的代码。

login.js

$(document).ready(function() { 

    $('form#sign_in').bind('ajax:success', function(e, data, status, xhr) { 
    console.log(data); 
    if(data.success) { 
     $('.user_nav').html(data.content); 
    } else { 
     $('.user_nav').prepend(data.errors.join('<br />')); 
    } 
    }); 

}); 

现在我想包含状态隐藏或显示这取决于用户登录或者各个环节我的网页上另一格。

目前我的代码是这样的。

<% if(signed_in?) %> 
    <li><%= link_to "Clients", "/clients" %></li> 
    <li><%= link_to "Jobs", "/jobs" %></li> 
<% else %> 
<% end %> 

但是,这是行不通的id如。这些链接最初并不是很酷,但是当我登录时链接不会再显示......除非我进行整页刷新。

我该如何ajax-ify这一节?

回答

0

改为使用CSS的可见性属性,这不太安全,因为任何人都可以在源代码中看到链接,但会顺利运行。

如果在JSP中,尝试通过该代码重新加载页面,如果该页面看上去像正在登录一样正在进行中,同时您的页面将被刷新。

+0

我将如何使用JavaScript重新加载页面?我无法重新加载div/li类的项目吗? – Keva161

+0

整个页面可以重载多种方式 –

+0

window.location.href =“Type_URL_of_Current_Page” 如果只是HTML的一部分,那么 –

1

您的示例不起作用,因为服务器必须再次呈现页面以传递signed_in?

我会建议摆脱ajax登录,只是做一个正常的提交和重新加载页面没有ajax。 如果你仍然想使用Ajax,就使一个页面重新加载使用JavaScript的可能性:

window.location.href=window.location.href 

window.location.reload() 

但你也可以做一个正常的提交,一切都应该工作精细。

千万不要这样做与CSS的知名度!这真的是不安全的,不是一个好的编程行为。服务器必须验证并将正确的html发送给用户,具体取决于他是否已登录。