2010-04-02 13 views
5

Hoy aparece un problema interesante al intentar cargar un archivo de imagen < 2MB usando dojo.io.iframe.dojo.io.iframe error al cargar un archivo

Mi función para procesar el formulario se llama, pero antes de que el formulario se ha publicado en el servidor que estoy consiguiendo el error siguiente:

TypeError: ifd.getElementsByTagName ("área de texto") [0] no está definido

Mi función que se utiliza para la acción del poste de la forma es:

function uploadnewlogo(){ 

var logoDiv = dojo.byId('userlogo'); 
var logoMsg = dojo.byId('uploadmesg'); 

//prep the io frame to send logo data. 
dojo.io.iframe.send({ 
    url: "https://stackoverflow.com/users/profile/changelogo/", 
    method: "post", 
    handleAs: "text", 
    form: dojo.byId('logoUploadFrm'), 
    handle: function(data,ioArgs){ 

     var response = dojo.fromJson(data); 


     if(response.status == 'success'){ 

      //first clear the image 
      //dojo.style(logoDiv, "display", "none"); 
      logoDiv.innerHTML = ""; 

      //then we update the image 
      logoDiv.innerHTML = response.image; 

     }else if(response.status == 'error'){ 

      logoMsg.innerHTML = data.mesg; 

     }else{    

      logoMsg.innerHTML = '<div class="error">Whoops! We can not process your image.</div>'; 
     } 

    }, 
    error: function(data, ioArgs){ 

     logoMsg.innerHTML = '<div class="error">' + data + '</div>'; 

    } 
}); 

} 

la forma es muy básico con sólo un componente de entrada de archivo y un simple botón que llama a este poco de javascript y d Ojo

Tengo un código muy similar en mi aplicación que carga documentos word/pdf y eso no es un error, pero por alguna razón esto sí.

¿Alguna idea o sugerencia sobre lo que debería intentar para que esto funcione sin errores?

Oh estoy usando php y Zend framework para el backend si eso tiene algo que ver con eso, pero lo dudo ya que ni siquiera está llegando al servidor antes de que falle.

Muchas gracias,

Grant

Respuesta

1

Desde el controlador de carga de dojo.io.iframe.send() se ha disparado, la solicitud debería haber sido enviado al servidor y la respuesta está de vuelta. Creo que la respuesta del servidor no es correcta. Tal vez el servidor devuelve una página de error.

Use Firebug para inspeccionar el DOM de la página actual y encontrar el iframe transportador creado por Dojo y verificar su contenido. Firebug también puede capturar iframe I/O, revisa su pestaña Net. Puede encontrar la causa raíz de este problema.

+0

Gracias por esto, después de algunas excavaciones importantes, el proceso de back-end enviaba cosas realmente extrañas y eso estaba causando que el elemento fallara . Gracias. –

0

Quizás quiso respetar la restricción escrita en el doc?

IMPORTANTE: Para todos los valores EXCEPTO html y xml, la respuesta del servidor debe ser un archivo HTML con un elemento textarea. Los datos de respuesta deben estar dentro del elemento textarea. El uso de un documento HTML es la única manera confiable y transversal que este transporte puede conocer cuando se carga la respuesta. Para el tipo mimet text/html (o XML), simplemente devuelva un documento HTML/XML normal. En otras palabras, sus servicios para formatos JSON y texto deben devolver los datos envueltos como el siguiente:

+0

Sí, me he asegurado de que esté dentro de las etiquetas textarea, pero sigue fallando. Voy a revisar el código con un peine de dientes finos para ver si puedo encontrar errores tontos otra vez ... –

3

Otra razón común para este error es que el servidor no empaqueta los datos correctamente. Esto significa que incluso si ha configurado "handleAs: json", debe enviar ese json envuelto en algún html. Esto es lo que debe ser similar:

<html> 
    <body> 
     <textarea> 
      { payload: "my json payload here" } 
     </textarea> 
    </body> 
</html> 

su error fue diciendo que no podía encontrar el área de texto en su regreso desde el servidor. Para obtener más información, consulte http://docs.dojocampus.org/dojo/io/iframe

+0

¡GRACIAS! Corrió en este error.Debería haber leído los documentos! – Eric

+0

Hola, me preguntaba cómo puedo envolver mi JSON en el formato como en los documentos. Actualmente estoy tratando de devolver JSON desde mi archivo python y 'handleAs' está configurado en HTML. – Himanshu

Cuestiones relacionadas