2012-02-14 18 views
7

Tengo un formulario cuyo objetivo es un iframe.Internet Explorer intercepta la respuesta XML

Al enviar el formulario, la respuesta es XML y tengo Javascript que analiza la respuesta.

Me di cuenta de que cuando se ejecuta en IE, IE intercepta la respuesta y la trata como una fuente RSS, por lo que mi código nunca recibe la respuesta. Si deshabilito las fuentes RSS (desde la opción de Internet, pestaña de contenido) todo funciona bien.

Configuré el tipo de contenido de la respuesta a "text/xml; charset = UTF-8 "pero aún así no funciona.

¿Hay alguna solución?

+1

Heh, me encanta leer sobre cosas raras como esta en IE. – Oliver

Respuesta

2

La mejor solución alternativa sería no utilizar un iframe en este caso. Parece que IE está detectando la respuesta http y leyéndola por sí mismo. ¿Hay alguna razón por la que no está haciendo una llamada AJAX para recuperar la información? Parece que usted está confiando en JavaScript para manejar la respuesta de todos modos, por lo que podría pensar que el uso de un objeto XMLHttpRequest sería mejor para usted: http://www.w3.org/TR/XMLHttpRequest/

Si eso es demasiado complicado, mira en una biblioteca como jQuery: http://jquery.com/ que tiene funciones integradas (y mucho más simples) para hacer llamadas AJAX y manejar respuestas.

Para expandir esto, debe enlazar la función de envío del formulario a una función JS (o usar jQuery para hacerlo) y recoger los datos del formulario, enviarlos en una solicitud AJAX y manejar la respuesta. jQuery tiene una función integrada serialize() que pretende convertir los datos del formulario en una página en información lista para usar en la función ajax() para enviar al servidor. Si no está familiarizado con el objeto XMLHttpRequest, le sugiero que use una biblioteca como jQuery para esta tarea.

0

Sí, también asegurarse de que el archivo se emite con las correctas Content-Disposition utilizando cabeceras, hacer que IE se "response.xml" y no "response.php" o algo así ...

'Contenido-Disposición: archivo adjunto; filename = "response.xml" '

+0

En realidad, la disposición del archivo adjunto funciona a veces de forma extraña en Chrome, así que asegúrese de leer la información del agente de usuario y solo haga los adjuntos en IE. Otros navegadores generalmente manejan las respuestas correctamente siempre que el tipo de contenido esté configurado correctamente, independientemente de la url utilizada para acceder a él. – Brian

1

OK, ha encontrado el problema ... Mi respuesta XML contiene etiquetas de REALIMENTACIÓN. IE trata estas etiquetas como fuentes RSS. Cambiar el nombre de la etiqueta a FDBACK resolver este problema ...

MS, ¿por qué esto no está documentado ???

Cuestiones relacionadas