112 votes

La prévention de la forme nouvelle présentation

La Page contient un formulaire HTML. Page deux - le code qui gère les données soumises.

Le formulaire de la page, on obtient soumis. Le navigateur obtient redirigé vers la page deux. Page deux poignées données présentées.

À ce stade, si la page deux est dessiné, un "Confirmer la Forme d'une nouvelle présentation de" message d'alerte apparaît.

Cela peut-il être évité?

151voto

CodeTwice Points 1216

Il y a 2 approches pour les gens habitués à prendre ici:

Méthode 1: Utiliser AJAX + Redirection

De cette façon, vous postez votre formulaire en arrière-plan à l'aide de JQuery ou quelque chose de similaire à la Page2, alors que l'utilisateur voit encore page1 affiche. Lors de la publication, vous rediriger le navigateur de Page2.

Méthode 2: Post + Rediriger vers soi

C'est une technique courante sur les forums. Formulaire sur la page 1 publie les données de Page2, Page2 traite les données et fait ce qui doit être fait, et puis il fait une redirection HTTP sur lui-même. De cette façon, la dernière "action", le navigateur se souvient est simple à OBTENIR sur la page 2, la forme est donc de ne pas être soumis de nouveau sur la touche F5.

10voto

davin Points 19682

Directement, vous ne pouvez pas, et c'est une bonne chose. Le navigateur alert est là pour une raison. Ce fil devrait répondre à votre question:

http://stackoverflow.com/questions/660329/prevent-back-button-from-showing-post-confirmation-alert

Deux principales solutions proposées étaient le PRG motif, et un AJAX soumettre suivie par un script de réinstallation.

Notez que si votre méthode permet d'OBTENIR et pas un POST de présentation de la méthode, alors ce serait à la fois résoudre le problème et de mieux l'adapter à la convention. Ces solutions sont fournis sur l'hypothèse que vous voulez/besoin pour publier des données.

9voto

Blrfl Points 4330

La seule façon d'être sûr à 100% de la même forme, n'est jamais présenté deux fois, c'est intégrer un identifiant unique à chaque vous question et de suivre celles qui ont été présentées au serveur. L'écueil, c'est que si l'utilisateur le dos à la page où le formulaire a été et entre de nouvelles données, la même forme ne fonctionne pas.

6voto

iwein Points 4957

Il y a deux parties à la réponse:

  1. Assurer messages en double ne plaisante pas avec vos données sur le côté serveur. Pour ce faire, intégrer un identifiant unique dans le poste de sorte que vous pouvez rejeter les demandes ultérieures côté serveur. Ce modèle est appelé Idempotent Récepteur dans la messagerie termes.

  2. En sorte que l'utilisateur n'est pas gêné par la possibilité de dupliquer soumet par les deux

    • redirection vers une OBTENIR, après la POSTE (POST rediriger OBTENIR le motif)
    • désactivation du bouton à l'aide de javascript

Rien que vous n'moins de 2. totalement en évitant de dupliquer les soumet. Les gens peuvent cliquer très vite et les pirates peuvent afficher toute façon. Vous avez toujours besoin d'1. si vous voulez être absolument sûr il n'y a pas de doublons.

2voto

Joel Points 868

Si vous actualisez une page avec les données POST, le navigateur de confirmer votre nouvelle présentation. Si vous utilisez des données, le message ne sera pas affiché. Vous pourriez aussi avoir la deuxième page, après l'enregistrement de la présentation, de rediriger une troisième page avec pas de données.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X