Foros del Web » Programando para Internet » Javascript »

Cargar Imagen con ajax.

Estas en el tema de Cargar Imagen con ajax. en el foro de Javascript en Foros del Web. Buenas. Estoy empezando a trabajar con ajax. Y no lo manejo bien aun. Les cuento como va el rollo. Estoy intentando hacer un formulario de ...
  #1 (permalink)  
Antiguo 16/12/2011, 14:20
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 2 meses
Puntos: 16
Cargar Imagen con ajax.

Buenas. Estoy empezando a trabajar con ajax. Y no lo manejo bien aun. Les cuento como va el rollo. Estoy intentando hacer un formulario de carga de proyectos. En el que pueda cargar el nombre del proyecto y una imagen principal, y, deseo con ajax que se ejecute el script php que lo registra en la base de datos. y luego mostrar en la misma página otro formulario...

Todo va bien hasta el momento. No es nada complejo. El problema lo tengo por haberle ingresado al formulario lo de la imagen. ya que al pasar los parametros del form por medio de la funcion ajax. Como que no se envia la imagen como tal. (O realmente no se que es) y no puedo usar la variable "$_FILES" para trabajar la imagen en el script que guarda en la bd.
Alguien que pueda decirme como puedo pasar una imagen para trabajarla con $_FILES?
Aqui pongo los codigos para explicarme mejor.
Cita:
cargarProyecto.php
Código PHP:
Ver original
  1. echo "<div id=\"contenido\">
  2.     <h3 class=\"titulo\">Cargar Proyectos</h3>";
  3.  
  4.     $conTipoProy="select * from tipoProyecto;";
  5.     $traerTipoProy=ejecutarQuery($conTipoProy);
  6.     $selectTipo="<select name=\"tp\">";
  7.     while($tipoProyecto=mysql_fetch_array($traerTipoProy)){
  8.         $selectTipo.="<option value=$tipoProyecto[2]>$tipoProyecto[1]</option>";
  9.     }
  10.     $selectTipo.="</select>";
  11.     if(isset($_REQUEST['error'])){
  12.         echo "<h4>el formato no es valido</h4>";
  13.          }
  14.     echo"
  15.     <form name=\"formProy\" method=\"post\" enctype=\"multipart/form-data\">
  16.         <table>
  17.             <tr>
  18.                 <th>Tipo de Proyecto</th>
  19.                 <td>$selectTipo</td>
  20.             </tr>
  21.             <tr>
  22.                 <th>Nombre del Proyecto</th>
  23.                 <td><input type=\"text\" name=\"nombre\" size=\"40\"></td>
  24.             </tr>
  25.             <tr>
  26.                 <th>Imagen Principal</th>
  27.                 <td><input type=\"file\" name=\"imag\"></td>
  28.             </tr>
  29.         </table>
  30.         <input type=\"button\" name=\"cargar\" value=\"Cargar\" onclick=\"regProy();\">
  31.     </form>";

Cita:
funciones Ajax
Código Javascript:
Ver original
  1. function regProy(){
  2.     //alert ("hola mundo");
  3.      //Inicializo objeto
  4.     ajax = objetoAjax();
  5.     //Preparacion de la petición.
  6.     ajax.open("POST", "registroProyecto.php",true);
  7.     //Indicar procendia de la información
  8.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  9.     //capturar datos
  10.     var datosForm = formProyecto();
  11.     //enviar datos en el cuerpo de la petición
  12.     alert(datosForm);
  13.     ajax.send(datosForm);
  14.     //manejador de datos al ejecutarse peticion
  15.     ajax.onreadystatechange=procesarData;
  16.    
  17. }
  18.  
  19. function formProyecto(){
  20.     var campos=document.formProy.elements;
  21. //  alert(campos);
  22.     var datos=new Array();
  23.  
  24.     for(var i=0;i<campos.length;i++){
  25.         //(alert(i);
  26.         parametros=encodeURIComponent(campos[i].name)+"=";
  27.         parametros+=encodeURIComponent(campos[i].value);
  28.         alert(parametros);
  29.         datos.push(parametros);
  30.     }//fin for
  31.     parametros=datos.join("&");
  32.     //DEVOLVER la cadena
  33.     return parametros;
  34. }//fin funcion proyecto
  35.  
  36.  
  37. function procesarData(){
  38.     if(ajax.readyState == listoAjaxCompleto){
  39.        
  40.         if(ajax.status==200){
  41.             nodoTexto=ajax.responseText;
  42.             alert(nodoTexto)
  43.             padre=document.getElementById('informacion');
  44.             padre.innerHTML=nodoTexto;
  45.            
  46.         }//fin if status
  47.        
  48.         }//fin if
  49. }


Al intentar capturar en registroProyecto.php el archivo de imagen.
asi
$imgPrin=$_FILES['imag'];
me da el siguiente error:
Cita:
Notice: Undefined index: imag in C:\wamp\www\termotex\registroProyecto.php on line 8
pero capturandolo con $_POST me muestra el nombre de la imagen. :S pero no puedo acceder a las caracteristicas. Alguien que pueda darme una idea? GRACIASSSSSS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1
  #2 (permalink)  
Antiguo 16/12/2011, 16:45
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: Cargar Imagen con ajax.

Hola:

Con Ajax no se pueden enviar ficheros, además, no admite la cabecera obligatoria para ello (multipart/form-data).

Fíjate que en el tag form lo has puesto bien, pero en el objeto ajax, no.

Lo que suele hacerse es enviar el formulario a un iframe para que parezca ajax, pero son envíos normales.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 19/12/2011, 13:43
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 2 meses
Puntos: 16
Respuesta: Cargar Imagen con ajax.

Si estuve regisando otros blogs luego de publicar mi duda y me tope con la verdad. jajajajjaja. aqui dejo uno con un ejemplo util.... por si alguien llega a tener la misma duda


http://www.desarrolloweb.com/articul...le-upload.html
  #4 (permalink)  
Antiguo 19/12/2011, 13:48
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Cargar Imagen con ajax.

sí, con CSS display:none;
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #5 (permalink)  
Antiguo 19/12/2011, 16:10
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: Cargar Imagen con ajax.

Hola:

Cita:
Iniciado por rjulio21 Ver Mensaje
Si estuve regisando otros blogs luego de publicar mi duda y me tope con la verdad. jajajajjaja. aqui dejo uno con un ejemplo util.... por si alguien llega a tener la misma duda


http://www.desarrolloweb.com/articul...le-upload.html
Acaso lo que has encontrado es distinto de lo que te respondí... ... también te podía mostrar un artículo anterior sobre el tema: Revisar las imágenes antes de subirlas.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #6 (permalink)  
Antiguo 20/12/2011, 07:29
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 389
Antigüedad: 13 años, 2 meses
Puntos: 16
Respuesta: Cargar Imagen con ajax.

jajajaja. si si es lo mismo. eso quise decir. para cuando lei tu respuesta, ya habia visto ese blog. y lo postie pues tiene el código.. si alguien tiene la misma duda. puede guiarse. Pero tengo una duda. a ver si puedes ayudarme.

Basandonos en el ejemplo y en lo que tu me dices. coloco el iframe que me mostrara un script php aparte ejm "cargaImagen.php" y yo estoy trabajando en formularioImagen.php. como puedo yo desde la pagina formulario validar que se cargaron bien en cargaImagen.php. para luego colocar los archivos cargados.... como lo hace gmail. por ejemplo?

En el ejemplo del post que puse usan la funcion
Código Javascript:
Ver original
  1. function resultadoUpload(estado, file) {
  2. ...
  3. }
Sin embargo no se de donde toma o como captura esos parametros "estado" y "file". Gracias....

Etiquetas: ajax
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 13:25.