2012-07-29 2 views
0

클라이언트 쪽에서 서버 쪽 세션을 지울 적절한 방법이 있습니까? 자바 스크립트를 사용하여 세션을 지우지 만 페이지가 리디렉션되면 서버 측 세션 값이 지워집니다. 여기에서 발생하지 않은 클릭 이벤트는 LI의 ONCLICK에서 호출하는 자바 스크립트 코드입니다.클라이언트 측에서 서버 측 세션을 지우는 적절한 솔루션이 있습니까?

<script type="text/javascript"> 
    function Clear_() { 

     '<%=Session["UID"]=""%>';// only this line executes when ever the page is redirected. 

     alert('ok'); 
    } 
    </script> 

답변

0

페이지가 구문 분석되는 동안이 문제가 발생하는 이유는 항상 서버 측 태그를 찾아 먼저 실행하기 때문입니다. 파싱 ​​서버 측 제어와 동일합니다. 따라서 코드를 작성해도 버튼의 클릭 이벤트가 발생해도 코드는로드 될 때마다 실행됩니다. 서버 태그의 코드에 주석을 추가하려고해도 코드가 실행됩니다.

기능 Clear_() {

// '<%=Session["UID"]=""%>';// still this line executes 

    alert('ok'); 
} </script> 

문제에 대한 대답은 NO입니다. 세션은 서버 측으로 저장되고 어떻게 클 리드면을 클리어 할 수 있습니까? 당신은 서버에 AJAX 요청을하고 서버

업데이트 2

에 세션을 취소해야 그 같은 영문 페이지가 서버 컨트롤에 대한 구문 분석한다. 요청이 서버에있는 동안이 서버 태그를 처리하고 값을 평가해야합니다. 예를 들어, 자바 스크립트의 일부 값을 서버의 일부 세션 값에서 채우려는 경우

// 자바 스크립트
var에 myValue = <퍼센트 = 세션 [ "SomeVal"] %>

페이지를 구문 분석 할 때, 서버 태그 내부의 값이 평가로 대체됩니다 자신의 실제 값 (제어의 경우 html로 바뀜). 그래서 최종 출력에, 그가 클라이언트로 전송, 다음과 같은 마크 업이 자바 스크립트

//

을 전송되는
var에 myValue = 50;

브라우저에서 "소스보기"를보고 확인할 수 있습니다.

+0

나는 해결책을 얻었다. 도와 줘서 고맙다. 나는 page 태그를 먼저 해석하고 실행하는 질문이 하나 더 있습니다. 하지만 여기에 자바 스크립트 함수와 서버 측의 연결이 무엇인지 혼란 스럽습니다. 파서가이를 서버 태그 또는 서버 요소로 취급하는 방법을 의미합니까? 나는 클라이언트 측에서 실행하기 위해 javascript 함수를 작성했기 때문에. – user484458

+0

내 업데이트 된 답변보기 – Anand

+0

감사합니다. 내 혼란 스러워요. 도움을 많이 주셔서 감사합니다. :) – user484458

1

안녕하세요 당신은 파일 logout.aspx.cs 뒤에이 코드는 코드에서

function Clear() 
{ 
    location.href="logout.aspx"; 
} 

으로 시도 할 수

Session.Clear(); 
0

당신은 "javascri에서 서버 측 페이지를 호출되어 수행 할 수있는 작업 pt 및 거기서 세션을 지우십시오. "

당신이 jQuery를 사용하는 경우, 그것은 logout.aspx 페이지로드 이벤트 안쪽이

<a href="somepage.aspx" id="logout">Logout</a> 

<script type="text/javascript" > 
$(function(){ 
    $("#logout").click(function(e){ 
     e.preventDefault(); 
     $.post("logout.aspx",function(data){ 
      //now do something in client side. May be show a message to user 
     alert("Succesfully logged out"); 
     }); 

    }); 
}); 
</script> 

Assumung 간단합니다, 당신은 세션을 삭제합니다. 일단 사용자가 로그 아웃하면 UI의 일부분 (사용자 이름, 로그인 등)을 업데이트해야 할 수도 있습니다.

0

당신은 자바 스크립트

PageMethods.EndSession() 페이지 방법을 사용할 수 있습니다;

[WebMethod()] 
public static void EndSession() 
{ 
    HttpContext.Current.Session.Abandon(); 
} 

사용 안 함 스크립트 관리자의 EnablePageModods를 true로 설정하지 마십시오.

+0

사용자의 경우에 대비해 제어합니다. 사용자 정의 컨트롤 대신 페이지에서 페이지 정의 메서드를 정의하십시오. –

0

클라이언트 쪽에서 세션을 삭제할 수 없다고 생각합니다. bcz 세션은 서버 쪽입니다. 클라이언트 브라우저에서 쿠키를 모두 지우면 세션이 삭제 될 수 있습니다. 세션을 만들 때 bcz가 삭제 될 수 있습니다. asp.net 세션을 삭제하는 데 성공하면 클라이언트 브라우저에 저장된 세션 ID를 생성합니다. 쿠키도 세션이 삭제 될 수 있습니다.

관련 문제