Danielside

informática softwarelibre divagaciones música

Combinar transacciones AJAX y peticiones estándar en un formulario

Si utilizamos AJAX -en este caso lo hago con jQuery- para guardar información introducida en formularios, puede que nos haya asaltado la necesidad de «redirigir» la página actual una vez que se ha creado el nuevo registro de información.

Esto es útil cuando se quiere reutilizar el formulario de edición de alguna entidad para crear una nueva y además esta entidad nueva tiene otras entidades asociadas, que no se pueden crear ni asociar hasta que no se cree la entidad principal. Por ejemplo: mientras se está editando un cliente, se pueden añadir datos de contacto asociados, direcciones, teléfonos, etc. pero no queremos permitir que ésto se haga durante el proceso de creación de un nuevo cliente, sino que esperaremos a que la entidad cliente esté creada y en un paso posterior permitiremos editar todas las entidades asociadas al cliente.

Se puede conseguir una redirección elegante con el uso de un formulario auxiliar al formulario de la entidad principal. Mediante javascript, asignaremos el identificador de la entidad recién creada a un campo del formulario redireccionador -que usa el método GET- y posteriormente enviaremos ese formulario, para cargar el formulario completo de edición de la nueva entidad.

<form id=»redireccionador» method=»GET» action=»form.php»>
<input type=»hidden» name=»accion» value=»ver_contacto» />
<<nput type="hidden" name="codigo" /> </form>

De esta manera elegante que funciona en cualquier navegador no tenemos que buscar trucos javascript para redirigir la página, evitaremos posibles bloqueos de la redirección por parte del navegador y no tendremos que devolver URLs como parte de la respuesta AJAX, con lo cual será más fácil de mantener la aplicación. En el formulario redireccionador podemos poner todos los campos que necesitemos como campos ocultos.

Os dejo un ejemplo funcional para descarga, que usa PHP, jQuery y JSON.


Archivado en categoría(s) Programación, sandbox

Enlace permanente



Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.