Foros del Web » Programando para Internet » Javascript »

AJAX upload

Estas en el tema de AJAX upload en el foro de Javascript en Foros del Web. Estoy haciendo un formulario para envío de fotos. Tengo 2 formularios que simulan ser uno solo, uno contiene el campo 'file' y el otro el ...
  #1 (permalink)  
Antiguo 26/03/2009, 13:50
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Pregunta AJAX upload

Estoy haciendo un formulario para envío de fotos. Tengo 2 formularios que simulan ser uno solo, uno contiene el campo 'file' y el otro el resto.

En el evento onblur del campo 'file' llamo a una función de javascript que valida que no esté vacío y luego envía el formulario. El target del formulario es un iframe contenido en el documento. En ese iframe arrojo 2 tipos de resultados según la situación, si el upload se hizo correctamente coloco el nombre que el servidor le asignó al fichero, y si no se logró completar la operación, escribo "ERROR".

Ahora bien, yo quiero saber cuándo se termina de subir la foto y así poder ponerla en forma de miniatura a un lado del formulario y así poder dar de alta el resto de los datos. ¿Cómo puedo hacer para conocer que se terminó de subir al servidor?, estuve pensando y mi idea era evaluar el contenido del iframe, con algún evento onChange en el body del iframe para que dispare la función que coloca la miniatura o bien un mensaje de error si es que no se pudo subir, pero no he logrado hacerlo.

¿Alguna idea?
  #2 (permalink)  
Antiguo 26/03/2009, 13:53
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: AJAX upload

Si entendí bien, el formulario se envía dentro del iframe para enviar el archivo.

En ese caso puedes usar el evento onload de la página (se ejecuta cuando se termina de cargar, en este caso, se ejecutará cuando termine de enviar el formulario) y en ese evento compruebas el contenido del iframe para saber si hubo un error o si cargó correctamente.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 26/03/2009, 13:58
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: AJAX upload

Del lado del servidor, al finalizar el upload podés hacer que se escriba un script que haga algo en la página principal. Ejemplo:
Código PHP:
<?php
    
if($upload=='ok'){
        echo 
'
        <script>
        top.document.body.innerHTML+="<img src=&quot;'
.$imagen.'&quot; />";
        </script>'
;
    }
?>
  #4 (permalink)  
Antiguo 26/03/2009, 14:18
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: AJAX upload

La idea del script está buena, ¿cómo puedo hacer para acceder al documento principal para poder escribir un div determinado?

Me explico, en el php escribo un script que cambie el contenido de un div de la página que contiene el iframe y con el evento onchange llamo a la función js y que haga lo que tenga que hacer...

Con top.document..... no llego.
  #5 (permalink)  
Antiguo 26/03/2009, 14:20
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: AJAX upload

Cita:
Iniciado por Adolfiten Ver Mensaje
La idea del script está buena, ¿cómo puedo hacer para acceder al documento principal para poder escribir un div determinado?

Me explico, en el php escribo un script que cambie el contenido de un div de la página que contiene el iframe y con el evento onchange llamo a la función js y que haga lo que tenga que hacer...

Con top.document..... no llego.
Esto es a lo que me refiero para ser más detallados:

top.document.body.getElementById('id_box_que_busco ').innerHTML='LALALA';

No me cambia el contenido del div.
  #6 (permalink)  
Antiguo 26/03/2009, 14:24
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: AJAX upload

¿Evento onchange de qué? .

Con top.document no deberías tener problemas en acceder a la página que contiene el iframe.

EDITO: Sin body, sin body
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #7 (permalink)  
Antiguo 26/03/2009, 14:28
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: AJAX upload

1-Desde el php escribo el script.
2-El script se ejecuta y me cambia el contenido de un div, llamémosle "respuesta".
3-Se dispara el evento onchange del div "respuesta" y me invoca una función de javascript.
4-La función toma el nuevo valor de respuesta y actúa en consecuencia.

¿Se entiende?
  #8 (permalink)  
Antiguo 26/03/2009, 14:34
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: AJAX upload

El div no tiene evento onchange (o por lo menos, aunque lo tuviere, no es estándar)
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #9 (permalink)  
Antiguo 26/03/2009, 14:37
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: AJAX upload

Buen dato. Entonces voy a usar un input huérfano del tipo hidden.
  #10 (permalink)  
Antiguo 26/03/2009, 14:42
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: AJAX upload

Yo sigo pensando que es más fácil de implementar usando el evento onload del iframe.

O, también, directamente desde el iframe puedes ejecutar funciones que están en la página padre (están en el objeto window):
Código javascript:
Ver original
  1. top.window.funcion(param, param, param);
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #11 (permalink)  
Antiguo 26/03/2009, 14:47
Avatar de Adolfiten  
Fecha de Ingreso: enero-2008
Ubicación: Frente a mi monitor...
Mensajes: 572
Antigüedad: 16 años, 4 meses
Puntos: 7
Respuesta: AJAX upload

La verdad que sí, es más fácil y limpio. Voy a tratar de implementar esa idea.

Probé y con un "onload='javascript:funcionblabla()" llamo y evalúo contenidos. 10pts.

Gracias David! Ahora me falta solucionar el tema acentos que me tiene podrido, nada más!
  #12 (permalink)  
Antiguo 26/03/2009, 15:26
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: AJAX upload

Hola:

Evidentemente he llegado tarde a responder este tema, pero en este artículo: Revisar las imágenes antes de subirlas se explica como hacer lo que quieres, y hay un formulariode ejemplo, pero hice después otro: Formulario (chequeo de imágenes) con un relojito de arena mientras la imagen se carga... el evento del campo file más adecuado creo que es (on)change, y para las cargas, el load del iframe...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 12:52.