2016-06-07 4 views
1

사용자가 확인을 클릭 할 때 페이지를 새로 고치기로되어있는 alert 상자가 있습니다. 이 상황이 발생하는 대신 사용자가 확인을 클릭하면 경고 상자가 사라지고 다시 나타납니다.알림 상자가 무한 루프로 멈춤

재발생의 무한 루프에 갇혀 있습니다!

<?php 
if(isset($_POST['submit'])) { 
    echo' 
    <script> 
    alert(\'Reply successfully flagged!\'); 
    window.location.reload(); 
    </script> 
    '; 
} 
?> 

<form method="post"> 
<input type="submit" name="submit"> 
</form> 

참고 : 나는 if 문에있을 alert 필요 - 난 그냥 순수 자바 스크립트 (예 : onclick)를 사용할 수 없습니다! 여기

답변

2

문제는 당신이 다시로드를 할 때, 그것은 즉 $_POST['submit']를 설정됩니다, 송신하는 POST 매개 변수를 실행할 것입니다. 대신 SESSION 플래그를 설정하는 것이 좋습니다.

<?php 
if(isset($_POST['submit'])) { 
    echo' 
    <script> 
    alert(\'Reply successfully flagged!\'); 
    location.href = location.href; 
    </script> 
    '; 
} 
?> 
+2

좋은 솔루션으로 변화

window.location.reload(); 

. 면책 조항 : [모든 브라우저가 아님] (https://bugs.webkit.org/show_bug.cgi?id=23735)은'reload()'로 데이터를 재 게시하지만, OP는 분명히 그 브라우저 중 하나를 사용하지 않습니다. –

+0

불행하게도 * (이유를 모르겠 음) * 알림 상자가 여전히 반복적으로 나타납니다. –

+0

@TheCodesee 캐싱 문제 버디처럼 보입니까? –

2

location.href = window.location.href; 
+0

포스트 데이터는이 방법으로 사라지 겠지만, 아마도 확인 메시지를 띄우고 다시로드하기 때문에이 컨텍스트에서 확인을 할 수 있습니다. 따라서 데이터가 더 이상 필요하지 않을 것입니다. 게다가, 게시물에 중복 된 db 레코드를 삽입하지 않는 것이 좋습니다. –

관련 문제