2009-03-03 5 views
0

나는이 기능을 jQuery의 포스트 기능을 사용하여 asp.net으로 설정된 세션을 파괴하고 로그인 페이지로 리디렉션하는 내 로그 아웃 처리기에 아약스 요청을 보낸다.내 페이지가 오류가 발생하지 않더라도 리디렉션되지 않는 이유는 무엇입니까?

<script type="text/javascript"> 
    //<![CDATA[ 
    function doLogout() { 
     var conf = false; 
     conf = confirm("Really log out?"); 
     if (conf === true) { 
      $.post("logout.ashx"); 
     } 
    } 
    //]]> 
</script> 

지금까지 로그 아웃 링크 기능은 훌륭합니다 : 사용자가 그것을 클릭하면 확인 상자가 나타나고 예를 클릭하면 로그 아웃 핸들러가로드됩니다.

Public Sub ProcessRequest(ByVal context As HttpContext) Implements IHttpHandler.ProcessRequest 
    With context 
     If .Session IsNot Nothing Then 
      context.Session.Clear() 
      context.Session.Abandon() 
     End If 
     .Server.Transfer("default.aspx", False) 
    End With 
End Sub 

Response.Redirect을 사용해도 아무런 차이가 없습니다.

나는 모든 것이 잘 작동하는지 추적함으로써 확인했다. 자바 스크립트 또는 asp.net 오류가 없습니다. 유일한 문제는 브라우저의 페이지가 변경되지 않는다는 것입니다.

어떤 아이디어?

답변

1

아약스 요청을 게시 할 때 원하는 모든 서버로 리디렉션 할 수 있지만 수행중인 작업은 궁극적으로 해당 아약스 요청에 응답하는 페이지를 결정하는 것입니다. 전체 페이지를 리디렉션하려면 전체 페이지에서 게시하거나 응답을 처리하는 자바 스크립트를 작성하여 리디렉션 할시기를 결정해야합니다.

0

문제는 서버 콜백이 비동기 자바 스크립트 호출이고 페이지 다시 게시가 아니라는 것입니다. 브라우저에서 페이지를 변경하려면 로그 아웃 함수를 호출 한 후 javascript 함수에서이 작업을 수행해야합니다.

+0

그래서 window.location ([url])을 호출 하시겠습니까? – Anders

+0

네, 로그 아웃 기능이 먼저 성공할 필요가 있다고 생각 하긴하지만, 그 라인을 따라 뭔가가 있습니다. Logout 페이지에 다시 게시하고 로그 아웃 한 후 리디렉션을 수행하는 것이 좋습니다. –

관련 문제