2014-07-23 2 views
0

2시 시나리오에서는 window.location는 Ajax 호출 작동하지 않습니다 내가 메인 페이지로 리디렉션

  1. 사용자 안타는
  2. 세션이 만료 로그 아웃하는 동안 ...

로그 아웃 기능 코드 ...

$("#logoutLink").click(Logout); 
    function Logout() { 
     $.post("Logout", 
      { antiCSRF: '{{acsrf}}', 
      session_id: '{{session_id}}' 
     }); 
     alert("You are now securely logged out."); 
     window.location = './'; 
    } 

세션 만료 코드

,536,
function checksession() { 

      $.post("CheckSession", 
        { antiCSRF : '{{acsrf}}', 
         session_id: '{{session_id}}' 
        },validateresult).fail(function() {alert("Session check failed")}) 

} 



function validateresult(result){ 
       if (result == "N"){ 
       valid_flag = "N" 
       alert("Your session has been timed-out. Please click OK to be redirected to the login page to start a new session."); 

       window.location = './'; 
       } 
       else { valid_flag = "Y"; 
       return valid_flag 
       } 
      } 

첫 번째 경우 즉, 로그 아웃 버튼을 누르면 페이지가 아무런 문제없이 기본 페이지로 리디렉션됩니다 ...

하지만 아약스 호출 중에 실행되는 코드는 작동하지 않습니다. 에서는 window.location가

확실 아니

+0

매우 혼란 것. 어떤 아약스가 작동하지 않나요? 두 개의 아약스가 있으며 두 함수 모두 리디렉션이 있습니다. –

+0

@Hanlet : 둘 다 아약스 호출하지만 두 번째 경우에는 별도의 함수 호출로 응답을 처리합니다. 첫 번째 경우에는 정상적으로 작동하지만 두 번째 경우에는 리디렉션이 작동하지 않습니다 ... – user1050619

답변

0

AJAX 호출의 차이 것입니다 .. 작동하지 않는 것은 비동기입니다. 당신은 경고를 (보여)와 $.post() 완료되면 실행되는 콜백 함수에서 리디렉션을 수행해야합니다 : 당신이 요구하는

$("#logoutLink").click(Logout); 


function Logout() { 
    $.post("Logout", {antiCSRF: '{{acsrf}}', session_id: '{{session_id}}'}, function() { 
     alert("You are now securely logged out."); 
     window.location = './'; 
    }); 
} 
관련 문제