forms - usuario - ¿Por qué mi formulario no carga archivos en Internet Explorer 9?
internet explorer no me pregunta si quiero guardar contraseña (5)
Bienvenido al episodio 32,342,343 de "¿Por qué Internet Explorer chupa tanto?" ...
He visto muchos informes de que IE9 hace un trabajo de mierda cargando archivos. Aparentemente tiene muchas advertencias acerca de cuándo funcionará o no (si alguien tiene una lista definitiva, me encantaría verla). Sin embargo, la mayoría de los problemas / soluciones que he encontrado están relacionados con javascript, generalmente el complemento de formulario jQuery o algo similar.
Mi formulario no se envía a través de AJAX y el campo de entrada del archivo no está oculto ni oculto con css. Sin embargo, recibo varios tickets de soporte por día de los usuarios de IE9 que intentan enviar el formulario y "no pasa nada" (= el formulario se envía. No hay errores, pero el archivo no se ha cargado). No he recibido una única queja con un Un navegador diferente, e IE8 incluso parece funcionar (como lo hace siempre).
Aquí está la parte superior de mi formulario. ¿Me estoy perdiendo de algo?
<form action="http://mysite.dev/account-settings/?open=resume" method="post" class="wpjb-form" enctype="multipart/form-data">
<input type="hidden" name="resume_form" value="resume_form" />
<fieldset class="wpjb-fieldset-default">
<input id="firstname" name="firstname" type="hidden" class="regular-text " value="John" />
<input id="lastname" name="lastname" type="hidden" class="regular-text " value="Henry" />
<input id="email" name="email" type="hidden" class="regular-text " value="[email protected]" />
<div class="wpjb-element-input-checkbox wpjb-element-name-is_active">
<label class="wpjb-label">Show resume? </label>
<div class="wpjb-field">
<label for="is_active_1"><input type="checkbox" class="" name="is_active" id="is_active_1" value="1" checked="checked" /> Yes <small style="display:inline;">(Uncheck to hide your resume)</small></label>
</div>
</div>
<div class="wpjb-element-input-select-one wpjb-element-name-file">
<label class="wpjb-label">Upload a <i>new</i> resume file</label>
<div class="wpjb-field">
<input style="line-height:1em;" id="file" name="file" type="file" class="regular-text " />
<small class="wpjb-hint">Accepted file types: doc, docx, odf, pdf, rtf</small>
</div>
</div>
</fieldset>
...
Sigue así con un par de <fieldset>
más y termina así:
....
<p class="submit">
<input type="submit" name="Submit" id="wpjb_submit" value="Save Changes" />
</p>
</form>
Actualización Estoy feliz por todos los que nunca han experimentado este problema, pero no solo soy yo: http://answers.microsoft.com/en-us/ie/forum/ie9-windows_vista/cannot-upload-files-using-internet-explorer-9/5724d921-ae71-e011-8dfc-68b599b31bf5
Update2 Estoy viendo muchas sugerencias para agregar una etiqueta meta para forzar al agente de usuario a IE8 ... <meta http-equiv="X-UA-Compatible" content="IE=8" />
No lo hago quiero hacer esto porque aunque sí admito IE8, muchos de los elementos de mi sitio se representan de manera diferente en IE8 en comparación con IE9. Esto crearía una experiencia de usuario bastante descuidada, ya que cualquier usuario de IE experimentaría un "cambio de tiempo" temporal a IE8 en esa página específica.
Como lo hace Graham, creo que esto podría ser más un problema de servidor. Además, nunca he tenido problemas con los archivos cargados en IE9 (o más nuevos). ¿Supongo que no quieres publicar el código del script PHP que maneja la carga?
OK, prefiero dejar un comentario, no una respuesta, pero aún no tengo los puntos para eso.
¿Están los usuarios en modo peculiar? La mayoría de los usuarios de IE desconocen el modo de peculiaridades y es posible que hayan hecho clic accidentalmente al intentar actualizar la página (en lugar de presionar F5). Si es intermitente esta podría ser la razón.
siguiendo desde arriba ... En el lado del servidor, ¿cómo compruebas los campos vacíos? Estoy más en las líneas de JS aquí donde a menudo busca "", nulo e indefinido. Solo estoy pensando que tal vez el modo peculiar es el envío de algunos datos confusos que falta en la comprobación de errores del lado del servidor porque no está mirando. Para ello y por lo tanto informa que todo está bien.
Pude solucionar esta pesadilla de un problema envolviendo un formulario jQuery enviado en un setTimeout:
$(''#complete_profile input[type="submit"]'').click(function(){
setTimeout(function() {
$(''#complete_profile form'').submit();
}, 0);
});
Esto puede causar una presentación duplicada cuando el formulario SÍ se envía, sin embargo, así que tenga cuidado.
Si no se envían datos, puede verificar los datos de la publicación mediante su entrada oculta en el script del lado del servidor. Por ejemplo, si estás usando php sería algo así como
<? if($_POST[''resume_form'']==''resume_form''){
//Do something
} ?>
O también puede usar etiquetas meta compatibles para IE para renderizar la página como IE8
<meta http-equiv="X-UA-Compatible" content="IE=8" />
Sugiero establecer el valor de metaetiqueta X-UA-Compatible
y ver si eso hace alguna diferencia.
Consulte esta pregunta para conocer los posibles valores: ¿Qué hace <meta http-equiv = "X-UA-Compatible" content = "IE = edge">?
También puede ser que la página esté activando un modo no estándar en IE9. Sugiero abrir la página en IE9, abrir las herramientas del desarrollador y ver qué modos de navegador / documento están seleccionados. Eso puede darte una pista. Tenga en cuenta que el atributo de formulario "enctype" no era compatible antes de IE8, por lo que si el navegador está utilizando un modo de documentación anterior, ese atributo no se reconoce.