Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/12/2011, 14:20
rjulio21
 
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