web-dev-qa-db-fra.com

Arrêter les navigateurs demandant de renvoyer les données du formulaire lors de l'actualisation?

J'ai une soumission de formulaire via POST. Je soumets le formulaire, et tout va bien, mais si j'essaye de recharger la nouvelle page vers laquelle le formulaire va après la soumission, j'obtiens le message "Voulez-vous renvoyer les données" (FireFox). Cela peut également arriver dans d'autres navigateurs, mais je ne suis pas sûr.

Est-ce que quelqu'un connaît un moyen d'arrêter ce message pour que je puisse continuer et rafraîchir la page. Ce n'est pas bon pour les environnements de production - les utilisateurs peuvent soumettre deux fois le même formulaire!

36
Bojangles

Vous devez utiliser le modèle POST-Redirect-GET.

Faites répondre votre formulaire par une redirection vers une demande GET.
De cette façon, lorsque l'utilisateur actualise la page, il ne fait que renvoyer le GET.

48
SLaks

Un moyen simple après response.sendRedirect est de recharger la page de cette façon:

window.location.href = window.location.pathname;

Ça marche pour moi.

9
Merboy

Si l'url n'a aucun paramètre, utilisez ceci -

window.location = window.location.href+"?rnd="+Math.random();

Ou bien utilisez ceci -

window.location = window.location.href+"&rnd="+Math.random();

Ça va marcher.

1
Ashwin

Ce sera une violation de la sécurité si les navigateurs le font. Par exemple, dans le traitement des cartes de crédit, le site peut facturer deux fois l'utilisateur.

Le seul moyen de contourner est d'aller dans la barre d'adresse et d'appuyer sur Entrée. Cela entraînera une nouvelle demande.

0
Madhur Ahuja