2012-05-29 13 views
1

저는 현재 내비게이션 영역에 <ul>을 보유하고 있습니다. <%= render :partial => "sessions/manager" %>은 기본적으로 사용자 로그인 상태에 따라 로그인 양식이나 환영 문구를 렌더링하는 다른 부분을 호출합니다.로그인 상태에 따라 DIV를 업데이트 하시겠습니까?

내 로그인 섹션은 ajx로 구동되므로 automaticlly 새로 고칩니다. 다음은 사용하는 코드입니다.

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 />')); 
    } 
    }); 

}); 

이제 나도 사용자에 따라 숨기거나 표시 상태에서 로그인하는 다양한 링크가 포함 된 내 페이지의 다른 사업부를 원한다.

현재 내 코드는이 부분입니다.

그러나 이것은 id와 같은 방식으로 작동하지 않습니다. 처음에는 멋진 링크는 표시되지 않지만 메신저 로그인시 링크가 다시 표시되지 않습니다 ... 전체 페이지를 새로 고침하지 않으면.

이 섹션을 어떻게 작성합니까?

답변

0

대신 CSS의 Visibility 속성을 사용하면 누구나 소스 코드의 링크를 볼 수 있지만 원활하게 작동하기 때문에 안전성이 떨어집니다.

그리고 JSP에서 해당 코드를 통해 페이지를 다시로드 해보십시오. 로그인하면 페이지가 새로 고침되고 페이지가 새로 고쳐집니다.

+0

어떻게 자바 스크립트를 사용하여 페이지를 다시로드합니까? div/li 클래스 항목을 다시로드 할 수 없습니까? – Keva161

+0

전체 페이지를 여러 가지 방법으로 다시로드 할 수 있습니다. –

+0

window.location.href = "Type_URL_of_Current_Page" HTML의 일부분 인 경우 –

1

sign_in을 전달하기 위해 서버가 페이지를 다시 렌더링해야하므로 예제가 작동하지 않습니까?

나는 ajax 로그인을 제거하고 그냥 정상적인 제출 및 ajax없이 페이지를 다시로드하는 것이 좋습니다 것입니다. 당신은 여전히 ​​아약스를 사용하려면 , 자바 스크립트와 페이지 새로 고침을 할 수있는 가능성이있을 것입니다 :

window.location.href=window.location.href 

또는

window.location.reload() 

을하지만 당신은 또한 정상적인 제출 할 수있는 모든 일을해야 벌금.

css 가시성으로 절대로하지 마세요! 그것은 정말로 안전하지 못하고 좋은 프로그래밍 동작이 아닙니다. 서버는 로그인했는지 여부에 따라 사용자에게 올바른 HTML을 확인하고 전송해야합니다.

관련 문제