2011-10-04 8 views
11

I utilizando jQuery Ajax, como a continuación:
análisis XML error: no bien formado en Firefox, pero bueno en Chrome

$.ajax({ 
url: 'servlet/*****Servlet', 
     dataType: "text", 
     success: function(data) { 
     var subareaCoordsPGs = preprocessCoords(data); 
     } 
    }); 

funciona bien incluso i no se estableció el tipo de datos en Chrome, sin embargo, fracasó en FF con error de análisis XML.

Response Headersview source
Server Apache-Coyote/1.1
Transfer-Encoding chunked
Date Tue, 04 Oct 2011 00:08:08 GMT
Request Headersview source
Host localhost:8080
User-Agent Mozilla/5.0 (Windows NT 5.2; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
Accept text/plain, /; q=0.01
Accept-Language en-us,en;q=0.5
Accept-Encoding gzip, deflate
Accept-Charset ISO-8859-1,utf-8;q=0.7,;q=0.7
Connection keep-alive
X-Requested-With XMLHttpRequest
Referer http://localhost:8080/
*/
Cache-Control max-age=0

XML Parsing Error: not well-formed Location: moz-nullprincipal:{2f6a8381-b987-448b-88c2-e89c4e13440b} Line Number 1, Column 4:

[email protected] -33.9353900931769,151.247877472978 -33.9360784582012,151.24...
------^

después buscado, ya sé que es bueno para establecer el tipo de datos adecuado, yo quiero que sea analizado simplemente como texto normal, pero ¿por qué suposición inteligente no funciona en FF, incluso lo fijo de tipo es "texto" explícitamente?

+1

Tenga en cuenta que incluso si recibe este mensaje, su llamada de éxito podría activarse con los datos. La última versión de Firefox puede quejarse pero luego continuar, o al menos en mi caso Firefox 55 lo hizo. Este mensaje de error actuó como un pretexto durante un tiempo para mí, ya que asumí que era fatal. –

+0

@ J. Allen: estoy enfrentando el mismo problema. Estoy viendo este problema en la última versión de Firefox. Alguna idea para resolverlo? – santoshM

Respuesta

16

Su servidor no devuelve un tipo de contenido, por lo que Firefox supone que, dado que es _XML_HttpRequest, su respuesta podría ser XML e intentará analizarla. Cuando eso falla, deja de intentar e informa que esto no era XML después de todo.

Chrome probablemente hace lo mismo pero no informa nada.

Sugiero que realmente envíe un encabezado Content-Type que indique cuáles son sus datos.

+0

gracias por sus consejos. Establecí el tipo de contenido texto/plano; charset = UTF-8 usando jQuery Ajax como establecer el parámetro contentType: "text/plain; charset = UTF-8", y todavía funciona para Chrome pero no para FireFox – qc999

+0

@ qc999 No tengo idea de lo que hace jQuery. ¿Llama a overrideMimeType en el objeto XHR? –

+0

@ Boris Zbarsky había revisado el encabezado de solicitud de FireBug, se ve así: Host: localhost: 8080 User-Agent: Mozilla/5.0 (Windows NT 5.2; WOW64; rv: 7.0.1) Gecko/20100101 Firefox /7.0.1 Aceptar: texto/normal, */*; q = 0.01 Accept-Language: en-us, en; q = 0.5 Aceptar-Codificación: gzip, deflate Aceptar-Juego de caracteres: ISO-8859-1, utf-8; q = 0.7, *; q = 0.7 Conexión: keep-alive Content-Type: text/plain; charset = UTF-8 X-Requerido-Con: XMLHttpRequest, así que supongo que ha reemplazado el tipo de contenido, pero todavía tiene el mismo problema de análisis XML. – qc999

Cuestiones relacionadas