Quelle est la meilleure pratique pour passer des variables d’une page HTML à une autre?

StackOverflow https://stackoverflow.com/questions/216536

  •  03-07-2019
  •  | 
  •  

Question

Je suis relativement nouveau dans le domaine de la programmation d'applications Web, j'espère donc que cette question n'est pas trop élémentaire pour tout le monde.

J'ai créé une page HTML avec un FORM contenant une grille de données dojox (v1.2) remplie de rangées de descriptions pour différents produits d'épicerie. Une fois que l'utilisateur a sélectionné l'élément qui l'intéresse, il clique sur le bouton "Soumettre". bouton.

À ce stade, je peux obtenir que la fonction javascript stocke le numéro d'identification de l'article sous forme de variable javascript MAIS je ne sais pas comment passer cet identifiant à la page HTML suivante.

Dois-je simplement passer l'ID en tant que paramètre de chaîne de requête d'URL? Y a-t-il d'autres meilleurs moyens?

EDIT: Le processus global ressemble à un panier. L'utilisateur sélectionnera l'élément dans la grille, puis, à la page suivante, renseignera certains détails, puis passera à la caisse.

Je dois également mentionner que j'utilise Grails, ce qui se passe dans une page SGP, mais pour le moment, elle ne contient que du HTML.

Était-ce utile?

La solution

Vous pouvez simplement utiliser un champ de saisie masqué; qui est transmis dans le cadre du formulaire.

<html>
  <head>
  </head>
  <body>
    <script type="text/javascript">
      function updateSelectedItemId() {
        document.myForm.selectedItemId.value = 2;
        alert(document.myForm.selectedItemId.value);

       // For you this would place the selected item id in the hidden
       // field in stead of 2, and submit the form in stead of alert
      }
    </script>

    Your grid comes here; it need not be in the form

    <form name="myForm">
      <input type="hidden" name="selectedItemId" value="XXX">
      The submit button must be in the form.
      <input type="button" value="changeSelectedItem" onClick="updateSelectedItemId()">
    </form>
  </body>
</html>

Autres conseils

C’est bien, mais il est préférable d’utiliser un langage de script tel que JSP, PHP, ASP ... et vous pouvez utiliser de simples méthodes POST et GET.

La meilleure méthode (à mon humble avis) consiste à l'inclure dans l'URL.

href = http: //NewPage.htm? var = value " ;;

encodeUriComponent une chaîne Valeur

Une façon d’envoyer des variables à l’aide de POST à ??une autre page consiste à faire en sorte que le lien vers la page suivante soit une entrée de soumission sur un formulaire où l’attribut d’action est votre page cible. Pour chaque variable que vous possédez, vous pouvez inclure des entrées de type attribut "masqué". sous cette forme, en ne rendant visible que le bouton.

Une autre option consiste à générer de manière dynamique des liens sur la page avec quelque chose comme PHP où vous repeupler les requêtes GET actuelles.

Enfin, vous pouvez toujours stocker ces informations dans le tableau PHP $ _SESSION sans avoir à vous soucier de la transmission continue de ces variables via la navigation du site.

Votre choix dépendra du nombre d’options de navigation dans lesquelles vous souhaitez conserver les mêmes variables. Cela dépendra également du niveau de sécurité que vous souhaitez pour votre back-office et du montant que vous souhaitez divulguer à l'internaute avancé.

Si vous n’avez besoin que de l’ID sur les pages suivantes, vous pouvez le transmettre en tant que paramètre de chaîne de requête.

Toutefois, vous aurez parfois besoin de relayer plus d'informations et de transmettre une variété de paramètres à différentes pages. Le fait de devoir gérer différents ensembles de paramètres pour différentes pages peut parfois devenir un peu poilu. Dans ce cas, je vous suggère de conserver un champ masqué dans le formulaire et de créer un objet argument qui stocke chacun de vos paramètres. Sérialiser l'objet argument avec JSON et le stocker dans votre champ caché. Postez le formulaire sur le serveur. Lors du chargement de la page suivante, désérialisez l'objet et récupérez les valeurs dont vous avez besoin.

En supposant que vous soyez limité à l'utilisation de pages HTML, je pense que la meilleure approche consiste à transmettre l'identifiant de la chaîne de requête à la page suivante. Il est relativement facile d'extraire cette valeur de la chaîne de requête de la page suivante. Si vous avez besoin d'un peu plus de discrétion pour transmettre la variable (ou si vous souhaitez que la variable persiste plus d'une page), vous pouvez également définir un cookie et le récupérer à la page suivante.

Puisque vous essayez de le faire dans une application Grails, vous avez le choix d'utiliser Flash. Cela n’a peut-être aucun sens si vous souhaitez passer directement d’une page HTML à une autre, car la portée serait définie dans un contrôleur. Si vous n'avez pas besoin d'effectuer de traitement de la sorte entre les demandes, nous vous suggérons d'utiliser un champ de formulaire masqué pour simplifier les choses.

http://grails.org/Controllers+-+Controller+Scopes

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top