2012-06-26 63 views
21

Tengo una aplicación web que se bloquea en las solicitudes ajax con google chrome (funciona con todos los demás navegadores web que se probó). Después de la depuración encontré que el error es causado por response.responseText que no está definido. El objeto XHR se ve así:¿Cómo depurar una solicitud ajax fallida en google chrome?

argument: undefined 
isAbort: false 
isTimeout: undefined 
status: 0 
statusText: "communication failure" 
tId: 3 

En depurador en la pestaña de 'red' consigo "(no)", sin embargo todas las cabeceras están allí y que incluso puede copiar en el portapapeles el cuerpo de la respuesta (que es una JSON válido).

Mi pregunta es: ¿cómo puedo solucionar este problema? Dónde encontrar información adicional, ¿qué causa que falle esta solicitud?

+0

Proporcione más información sobre el servidor y la infraestructura de red. ¿El error ocurre cada vez que emite la solicitud o esporádicamente? – Stan

+0

¿Puedes mostrar cómo estás haciendo la llamada AJAX? Además, ¿puedes decir en qué navegadores está funcionando? – Uooo

+0

¿No recibe ningún error dentro de la consola de JavaScript? –

Respuesta

4

Lo primero que verificaría dos veces es que los datos que regresan de la respuesta son JSON válidos. Simplemente páselo a través de un validador JSON como este en línea. JSONLint: http://jsonlint.com/

Supongo que estás usando algo como jQuery para hacer tus solicitudes AJAX. De ser así, asegúrese de estar utilizando la versión de desarrollo de esa biblioteca. Ahora que está utilizando la versión de desarrollo (sin comprimir) de la secuencia de comandos, encuentre la función particular que está utilizando (por ejemplo, $ .ajax) y luego, dentro del inspector de Chrome, inserte un punto de interrupción en el código donde la respuesta AJAX es primero manejado (por ejemplo, https://github.com/jquery/jquery/blob/master/src/ajax.js#L579). Luego proceda a recorrer el código, inspeccionando varios valores de retorno para ver exactamente qué está pasando mal.

Si no está utilizando algo como jQuery para hacer llamadas AJAX, entonces le recomendaría usar un marco para evitar posibles problemas de compatibilidad entre navegadores como los que podría estar experimentando en este momento.

+0

No estoy seguro de si esta es la solución correcta, como lo fue hace mucho tiempo, pero no creo que el json no válido sea una razón para mostrar la solicitud como fallida. Así que acepto su pregunta y espero que si encuentro esto en el futuro, sería útil. – zefciu

13

Finalmente encontré la solución a mi problema: AdBlocks, este plugin es uno de los más útiles aquí, pero cuando bloquea algo en su sitio web, ¡no dice por qué!

+3

GRACIAS por señalar esto. Pasé lo mejor de la tarde golpeando mi cabeza con esto. – applepie

+2

[HTTPs en todas partes] (https://www.eff.org/https-everywhere) causó mis problemas. – Hengjie

+1

gracias, me salvaste el día! adBlocks previene las solicitudes ajax como ads/add ... ¡excluyendo el dominio de adBlocks, resolvió mi problema! – RezaSh

Cuestiones relacionadas