2012-01-23 9 views
5

Básicamente se reduce a, ¿hay algún caso en el que sería malo para que llame a la función de devolución de llamada correcta en códigos de estado por debajo de 400?Éxito con código de estado AJAX <400?

Al mirar el list of status codes for HTTP, no creo que lo haya, pero quiero asegurarme. No creo que obtenga los códigos de nivel 1XX, ya que parece que la mayoría de ellos regresan antes de que se procese la solicitud completa y readyState === 4 (no me importa el IE 7 de 122). Y aún quiero devolver el éxito en los códigos de estado 302 y 304. Entonces, ¿es status < 400 una forma aceptable de captar todo esto?

+1

El uso de códigos de estado HTTP para señalar el éxito o el fracaso del rendimiento del script de manejo generalmente no es una buena idea. Los códigos de estado HTTP deben limitarse a señalar errores de nivel http, no a "zomg, su solicitud de búsqueda no encontró ningún resultado". –

+0

@MarcB Este código será para el éxito y el fracaso de la carga de componentes esenciales. Esto será para un juego de HTML 5 y usaré un script inicial para cargar todo el contenido mientras visualizo una pantalla de carga. Aquí es donde el éxito/fracaso se vuelve importante. Si algo no se carga, necesito manejarlo y mostrar un mensaje relevante. – Ktash

+1

Luego haga que la respuesta devuelva un objeto json, algo similar a '{" error ": true," code ": 401}' y verifique eso. la señalización de un http 401 indica que algo sucedió en el nivel http, lo cual no es cierto, todo sobre la solicitud http funcionó perfectamente. –

Respuesta

1

Sobre la base de @sarnold's concerns, parece que el XMLHttpRequest specifications dicen lo siguiente:

Si la respuesta es una redirección HTTP (código de estado 301, 302, 303 o 307), entonces debe ser seguido de forma transparente (a menos que viole la seguridad o las precauciones de bucle infinito). Cualquier otro error (incluido un 401) DEBE hacer que el objeto use esa página de error como respuesta.

Lo que parece indicarme que las respuestas 2XX o 3XX son válidas. Entonces, en resumen, mis hallazgos indican que status < 400 es una verificación de respuesta de estado apropiada.

1

A 301 significa que el cliente es responsable de realizar la llamada HTTP nuevamente con la nueva URL. ¿Su biblioteca o kit de herramientas ya maneja esto por usted?

+0

No estoy usando una biblioteca. Este es todo el código personalizado en Javascript directo. Esto muy bien podría ser mi respuesta si el objeto 'XMLHttpRequest' no maneja esto automáticamente. – Ktash

+1

de la hoja de especificaciones ['XMLHttpRequest'] (http://www.w3.org/TR/2006/WD-XMLHttpRequest-20060405/):" Si la respuesta es una redirección HTTP (código de estado 301, 302, 303 o 307), luego DEBE ser seguido de manera transparente (a menos que viole las precauciones de seguridad o de bucle infinito). Cualquier otro error (incluido un 401) DEBE hacer que el objeto use esa página de error como respuesta ". Parece que podría estar seguro con 301s. – Ktash

+0

Excelente. Es posible que desee agregar eso como respuesta; es mucho más autoritario que mi lectura de la especificación HTTP. :) – sarnold

Cuestiones relacionadas