2016-06-07 1 views
1

J'ai une boîte alert qui est censée rafraîchir la page lorsque l'utilisateur clique sur OK. Au lieu de cela, la boîte d'alerte disparaît puis réapparaît lorsque l'utilisateur clique sur OK.Boîte d'alerte bloquée dans une boucle sans fin

Il est coincé dans une boucle sans fin de réapparaître!

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

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

Note: J'ai besoin alert d'être dans la déclaration if - Je ne peux pas utiliser pure Javascript (comme onclick)!

Répondre

2

Le problème est ici, quand vous faites un rechargement, il déclenche les paramètres POST à envoyer, à savoir le $_POST['submit']sera mis. Il est préférable de définir un drapeau SESSION à la place.

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

bonne solution. clause de non-responsabilité: [tous les navigateurs] (https://bugs.webkit.org/show_bug.cgi?id=23735) repostent les données avec 'reload()', mais OP n'utilise évidemment pas l'un de ces navigateurs :) –

+0

Malheureusement * (je ne sais pas pourquoi) * la boîte d'alerte est toujours coincée dans une boucle d'apparition. –

+0

@TheCodesee On dirait un copain de problème de mise en cache? –

2

changement

window.location.reload(); 

avec

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

notez que les données post seront perdues avec cette approche, mais c'est probablement OK dans ce contexte car il s'agit juste de tirer un message de confirmation et de recharger, donc les données ne sont probablement plus nécessaires. de plus, il est probablement préférable de ne pas insérer d'enregistrements db en double sur le post. –