2016-06-10 2 views
0

내 태그는 링크는 다음과 같이이다 :하나의 태그에서 두 개의 액션을 호출하는 방법은 무엇입니까?

<a href="<?php echo base_url().'dashboard' ?>" class="check_session">Home</a> 

클릭 링크 집, 그것은 대시 보드를 호출합니다. 전화 대시 보드 때, 나는 세션을 확인하고 싶습니다. 세션이 있으면 대시 보드로 전화하십시오. 세션 경우에는 존재는, 로그 아웃하지

내 자바 스크립트 코드는 다음과 같다 :

$(".check_session").click(function() { 
    $.ajax({ 
     url: base_url+"shared/check_session/"+Math.random()+new Date().getTime(), 
     success: function(response){  
      if(response == 'out') 
      { 
       alert('Please login'); 
       window.location.href = base_url + "logout"; 
      } 
     } 
    }); 
}); 

내 문제가 : 링크 홈을 클릭

, 그것은 어떤 전화 확인 세션 기능

모든 솔루션을 해결하기 위해 내 문제? 유 행동을하고자하는 경우

더 나은 태그를

및 JS

$(".check_session").click(function() { 
if(session = true) 
{ 
window.location.href = base_url + "dashboard"; 
} 
else 
{ 

    $.ajax({ 
     url: base_url+"shared/check_session/"+Math.random()+new Date().getTime(), 
     success: function(response){  
      if(response == 'out') 
      { 
       alert('Please login'); 
       window.location.href = base_url + "logout"; 
      } 
     } 
    }); 
} 
}); 

및 HTML

<div class="check_session"> class="check_session">Home</a> 
+0

당신은 PHP $ _SESSION 글로벌을 사용하지 않는? 세션 저장 방법을 모르겠다. 'if (isset ($ _ SESSION)) '-> true이면 대시 보드를 포함하고, 그렇지 않으면 로그인 페이지를 포함하십시오 ... 모든 자원의로드시 모든 서버 측에서 수행 할 수 있습니다. –

답변

0

대단히 감사합니다 event.preventDefault() 앵커의 기본 동작을 중지하려면 :

$(".check_session").click(function(e) { // <-----get the event here 
    e.preventDefault(); //<--------here stop the default behavior 
    var url = this.href; // <---get the url 
    $.ajax({ 
     url: base_url+"shared/check_session/"+new Date().getTime(), 
     success: function(response){  
      if(response == 'out'){ 
       alert('Please login'); 
       window.location.href = base_url + "logout"; 
      }else{ 
       window.location.href = url; // <----navigate to it here. 
      } 
     } 
    }); 
}); 

문제는이 앵커를 클릭하면 지정된 href으로 이동하므로 아약스가 호출되지 않습니다. 이 경우 앵커에 이벤트를 바인딩 한 경우 event.preventDefault()으로 기본 동작을 중지해야합니다.

Math.random()은 필요하지 않지만 new Date().getTime()이 수행합니다. 세션에 해당하는 경우

+1

'세션 '이란 무엇입니까? 그리고'session = true'? 나는이 문장이 항상 'true'로 평가 될 것이라고 생각한다. – Rayon

0

대시 보드로 리디렉션하기 위해 다른 조건을 함수에서 첫 번째 줄에 preventDefault()을 추가하고 추가

$(".check_session").click(function(e) { 
     var targeturl = $(this).attr('href'); 
     e.preventDefault(); 
    $.ajax({ 
     url: base_url+"shared/check_session/"+Math.random()+new Date().getTime(), 
     success: function(response){  
      if(response == 'out') 
      { 
       alert('Please login'); 
       window.location.href = base_url + "logout"; 
      }else{ 
        window.location.href = targeturl; 
      } 
    }); 
}); 
+0

I want like this : 'Home'. 왜냐하면 그것은 dinamyc href입니다. 그래서 자바 스크립트에서만'if', 아니'else' –

+0

업데이트 된 답변보기 – Vinie

관련 문제