Foros del Web » Programando para Internet » Javascript »

Manejar respuesta del servidor al enviar form

Estas en el tema de Manejar respuesta del servidor al enviar form en el foro de Javascript en Foros del Web. Hola: Siempre envié los datos de un form usando XMLHttpRequest. Ahora estoy utilizando el envío con la función submit del formulario. Nunca usé este método ...
  #1 (permalink)  
Antiguo 22/07/2012, 14:37
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Manejar respuesta del servidor al enviar form

Hola:

Siempre envié los datos de un form usando XMLHttpRequest.
Ahora estoy utilizando el envío con la función submit del formulario. Nunca usé este método y no sé como capturar desde javascript la respuesta del servidor.
En concreto, tengo un form en mi página y quiero que al presionar el botón de envío, los datos se envíen a un PHP, este devuelva una respuesta del tipo variable1=valor1&variable2=valor2 y pueda capturar esto desde javascript y mostrar el resultado del envío debajo del form. Sé como hacer todas estas cosas excepto capturar la respuesta al envío del form desde javascript. Con XMLHttpRequest, la función que usaba era onreadystatechange y la respuesta quedaba alojada en la variable responseText, pero no sé qué funciones y variables usar enviando el form con submit.
He buscado mucho la solución en Internet, pero está lleno de ejemplos de validación de datos antes de enviar, algo que ya manejo sin problemas, pero nadie habla de capturar la respuesta del servidor!!!
Espero que me puedan ayudar!
Muchas gracias.


Federico
  #2 (permalink)  
Antiguo 22/07/2012, 14:59
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Manejar respuesta del servidor al enviar form

No se puede porque al hacer un submit tradicional es el navegador quien envía la petición y recibe la respuesta, por lo que se recarga la pagina y por ende se limpia toda variable u objeto JavaScript presente.
En el caso de AJAX (XmlHttpRequest) es JavaScript quien envía la petición y es JavaScript el que recibe la respuesta, no el navegador, en conclusión lo que quieres sin JavaScript es imposible.

Veo que en su caso aprendió las cosas al revés, lo ideal es aprender PHP + HTML y luego JavaScript+AJAX, no lo contrario, además que siempre se debe de validar del lado del servidor y tener en cuenta que JavaScript puede estar desactivado, por lo que depender mucho de AJAX no es siempre recomendable.
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...

Última edición por maycolalvarez; 22/07/2012 a las 15:05
  #3 (permalink)  
Antiguo 22/07/2012, 15:32
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Manejar respuesta del servidor al enviar form

Hola:

Gracias por tu respuesta.
Hay muchas formas de hacer las cosas y todos los programadores terminamos por utilizar algunas y dejar de lado otras. No me parece que sea un tema relacionado con la secuencia correcta en que se deben aprender las cosas. De hecho, aprendí primero HTML y PHP y luego JS y AJAX!
A mi me gusta mucho enviar datos al servidor, que este responda y mostrar el resultado ahí mismo, sin tener que recargar otra página.
Yo había realizado un sistema que enviaba una imagen por form, PHP tomaba esa imagen y la cargaba en una base de datos, en un campo LONGBLOB.
Lo único que se me ocurre es enviar el campo file usando XmlHttpRequest, a través de su propiedad value:

<input type="file" id="archivo">

y en javascript:

document.getElementById("archivo").value

Pero no sé luego como tratarlo desde el servidor.
Lo más probable es que termine enviando todos los form con submit aunque la respuesta del servidor se muestre en otra página.
Muchas gracias de nuevo.


Federico
  #4 (permalink)  
Antiguo 22/07/2012, 16:19
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 8 meses
Puntos: 1532
Respuesta: Manejar respuesta del servidor al enviar form

Allí esta el problema, JavaScript NO tiene acceso al IO, por lo tanto no ser puede usar AJAX para subir archivos porque JavaScript no puede leer archivos del cliente.

Existen alternativas cómo plugins de flash que permiten emular AJAX para permitir subir archivos sin recargar la pagina, más recientemente con HTML 5 file Api, pero requiere un navegador compatible, aunque una forma simple es usar cómo target del formulario un iframe.

En ningún momento quise decir que su forma de aprender sea herrada, solamente que lo más común es primero realizar envíos de formularios normales antes del uso de AJAX
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 22/07/2012, 18:13
 
Fecha de Ingreso: diciembre-2007
Mensajes: 467
Antigüedad: 16 años, 4 meses
Puntos: 3
Respuesta: Manejar respuesta del servidor al enviar form

Hola:

Muchas gracias de nuevo por tu respuesta.
No hay ningún problema, sólo mencioné que, de hecho, yo aprendí primero HTML y PHP y luego JS y AJAX. Pero siempre quedan cosas por aprender!
Pensé que se podía tener acceso a la respuesta del servidor con AJAX usando el método convencional, es decir, form.submit().
Yo he programado en FLASH (actionscript) y sé que esa es una posibilidad, pero lo que ocurre es que tengo dos forms en esta página de mi sitio y quiero los dos con FLASH, los dos con submit o los dos con AJAX. Ya los hice con AJAX así que voy a dejarlos así y para que el navegante pueda enviar una imagen voy a usar otro formulario con submit, en otra página, dentro de un iframe, así la recarga se produce sólo dentro del iframe. La idea es que valide PHP y devuelva dentro del iframe los mismos elementos que antes del submit más la indicación de si la operación fue exitosa o no.
Muchas gracias por ayudarme.
Un saludo.


Federico

Etiquetas: formulario, funcion, manejar, php, respuesta, servidor
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:01.