2014-12-15 2 views
0

로그인 할 때 내가 다른 페이지로 리디렉션하려는 경우 사용자 지정 경고를 표시하고 싶습니다. 나는 이것을 가지고있다.자체적으로 호출되는 자바 스크립트 기능

 <div id="contentCalendar" class="col-md-3 images_1_of_4 text-center"> 
      <a><img onClick="show_alert();" id="rotateme" class="img-responsive img-circle center-block" src="web/images/calendaricon.png"/></a> 
      <h4><a href="#">Check our last events</a></h4> 

     </div> 
     <div id="myalert" class="alert alert-error"> 
     <a href="#" class="close" data-dismiss="alert">&times;</a> 
     <strong>Error!</strong> You must be logged in to see our calendar. 
     </div> 
     <script>  
     $('#myalert').hide(); 
     //What happen if you want to enter the events without loggin. 
     var logged_in = <?php echo ($logged_in); ?>; 
     function show_alert() 
     { 
      if(logged_in==true) 
      { 
       window.location="timeline.php"; 
      } 
      else 
      { 
       $('#myalert').show(); 
      } 
     } 
     </script> 

Logged_in이 true이고 리디렉션 될 때 어떤 이유로 매력이 작동합니다. 하지만 메신저가 로그 아웃했을 때 버튼을 누르지 않아도 알림이 표시되지 않습니다.

아이디어가 있으십니까?

+2

PHP에서 설정 한 값을 문자열로 읽으므로 부울 값으로 변환 해보십시오. – j08691

+0

대개의 경우 logged_in의 값은 성공 사례에서는 사실이 아니지만 일부 진실 값 –

답변

1

항상, 항상, 당신은 json_encode을 통해 JS에 포함 된 실행 모든 :

var logged_in = <?php echo json_encode($logged_in); ?>; 

때 단순히 echo PHP에서 위조 된 가치, 그것은 전자 따라서 아무 것도 선택하지 않아서 자바 스크립트를 깨뜨릴 수 있습니다.

+0

은 문제와 관련이 없습니까? – Alex

+0

이봐, 그게 정확히 문제 야. 지금은 훌륭하게 작동합니다. 거짓 값을 얻으면 인코딩을 중단하지 않을 것이라는 것을 전혀 알지 못했습니다. 그래서 나는 그걸 멀리까지 운 좋게 생각합니다. 고마워요. –

-1

어떤 종류의 이벤트에서 스크립트를 래핑해야합니다. 시도 :

$(document).ready(function() { 
    var logged_in = <?php echo ($logged_in); ?>; 
     function show_alert() 
     { 
      if(logged_in==true) 
      { 
       window.location="timeline.php"; 
      } 
      else 
      { 
       $('#myalert').show(); 
      } 
     } 
}); 
+0

이것이 필요한 이유를 설명해 주시겠습니까? – putvande

+0

본문 태그에 스크립트가 있거나 그 후에 스크립트가 body 태그 바깥 쪽이나 앞에 있는지 확인하십시오 ( – gaz

+0

런타임에 기능 명령문이 실행되고 정의되어 있음). 이벤트가 트리거 될 때 – Alex

1

이 줄을 시도해보십시오

var logged_in = <?php echo $logged_in ? 'true' : 'false'; ?>; 
0

이 PHP 코드가 제대로 부울을 출력한다고 가정합니다. 페이지 소스를 보면 올바르게 출력되었는지 확인할 수 있습니다.

이제 JavaScript 코드를 살펴보십시오.

는 클릭 이벤트 더 나은 솔루션은 인라인 이벤트 핸들러를 덤프하는 것입니다

<a href="#" onclick="show_alert(); return false"><img .... 

에게 앵커에 온 클릭을 이동하고 취소

.

클릭을 눈에 띄지 않게 붙이고 preventDefault를 사용하여 클릭을 취소하십시오.

HTML :

<a href="timeline.php" class="calendar"><img .... 

자바 스크립트를 다시

var logged_in = <?php echo ($logged_in); ?>; 
$("a.calendar").on("click", function (e) { 
    if(!logged_in) { 
     e.preventDefault(); 
     $('#myalert').show(); 
    } 
}); 
+0

은 인라인 핸들러를 전혀 제안하지 않습니다. – Alex

+0

@Alex는 OP 코드를 수정 한 것입니다. – epascarello