Pregunta

Soy relativamente nuevo en la programación de aplicaciones web, así que espero que esta pregunta no sea demasiado básica para todos.

Creé una página HTML con un FORMULARIO que contenía un datagrid dojox (v1.2) lleno de filas de descripciones para diferentes artículos comestibles. Después de que el usuario seleccione el elemento en el que está interesado, hará clic en " Enviar " botón.

En este punto, puedo obtener la función javascript para almacenar el número de ID del elemento como una variable de javascript, PERO no sé cómo pasar este ID a la página HTML subsiguiente.

¿Debo pasar el ID como un parámetro de cadena de consulta de URL? ¿Hay alguna otra forma mejor?

EDITAR: El proceso general es como un carrito de compras. El usuario seleccionará el elemento de la cuadrícula y luego, en la página siguiente, completará algunos detalles y luego realizará el pago.

También debo mencionar que estoy usando grails, por lo que esto está sucediendo en una página GSP, pero actualmente solo contiene HTML.

¿Fue útil?

Solución

Puedes usar un campo de entrada oculto; que se transmite como parte del formulario.

<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>

Otros consejos

Es bueno, pero es mejor usar un lenguaje de script como JSP, PHP, ASP ... y puedes usar métodos POST y GET simples.

El mejor método (imho) es incluirlo en la URL

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

encodeUriComponer una cadena Valor

Una forma de enviar variables a través de POST a otra página es hacer que el enlace a la página siguiente envíe una entrada en un formulario donde el atributo de acción sea su página de destino. Para cada variable que tenga, puede incluir el uso de entradas del tipo de atributo " oculto " de esta forma, haciendo visible solo el botón.

Otra opción es generar dinámicamente enlaces en la página con algo como PHP donde básicamente se vuelven a llenar las consultas GET actuales.

Finalmente, siempre puede almacenar esta información en la matriz PHP $ _SESSION y no tiene que preocuparse por pasar continuamente estas variables a través de la navegación del sitio.

Su elección dependerá de cuántas opciones de navegación haya donde desee mantener las mismas variables. También dependerá de qué tan seguro le gustaría que fuera su back-end y de la cantidad que desea revelar al usuario avanzado de la web.

Si solo va a necesitar el ID en las páginas siguientes, puede pasar el ID como un parámetro de cadena de consulta.

Pero habrá ocasiones en las que necesite transmitir más información y pasar una variedad de parámetros a diferentes páginas y tener que mantener diferentes conjuntos de parámetros para diferentes páginas puede resultar un poco complicado. Cuando este sea el caso, sugeriría que mantenga un campo oculto en el formulario y cree un objeto de argumento que almacene cada uno de sus parámetros. Serialice el objeto de argumento con JSON y guárdelo en su campo oculto. Publicar el formulario de nuevo en el servidor. Cuando se cargue la siguiente página, deserialice el objeto y recupere los valores que necesita.

Suponiendo que está limitado al uso de páginas html, creo que el mejor enfoque sería pasar el ID a lo largo de la cadena de consulta a la página siguiente. Es relativamente fácil extraer ese valor de la cadena de consulta en la página siguiente. Si necesita ser un poco más sigiloso al pasar la variable (o necesita que la variable persista durante más de una página), también puede configurar una cookie y recuperarla en la página siguiente.

Como está intentando hacer esto en una aplicación de Grails, tiene la opción de usar el alcance de Flash. Esto podría no tener ningún sentido si desea ir directamente de una página HTML a la siguiente, ya que el alcance se definirá en un controlador. Si no necesita realizar ningún tipo de procesamiento entre solicitudes, sugeriría usar un campo de formulario oculto para que sea sencillo.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top