2012-06-07 33 views
15

tengo este código:estado de captura 404 con jQuery AJAX

$.ajax({ cache: false, 
    url: "/Admin/Contents/GetData", 
    data: { accountID: AccountID }, 
    success: function (data) { 
     $('#CityID').html(data); 
    }, 
    error: function (ajaxContext) { 
     alert(ajaxContext.responseText) 
    } 
}); 

Todavía estoy confundido acerca de la AjaxContext y cómo capturar 404 códigos de retorno. Sin embargo, tengo otra pregunta. Estoy leyendo algo sobre la codificación con éxito y fracaso, y ya no uso el error en las versiones recientes de jQuery.

Entonces, ¿debería cambiar mi código para usar hecho y error? ¿Cómo puedo verificar un 404?

+0

¿Cómo este trabajo usando .fail()? –

Respuesta

24

reemplazar su función de error de la siguiente manera ...

error:function (xhr, ajaxOptions, thrownError){ 
    if(xhr.status==404) { 
     alert(thrownError); 
    } 
} 
+0

Anteriormente tuve un error: function (jqXHR, textStatus, errorThrown). es ajaxOptions correcto. ¿Debería ser textStatus? – Alan2

+0

Funciona para mí, no veo por qué no, pero dispuesto a que se lo digan de manera diferente. – JayTee

+3

Solo quiero señalar que esto no funcionará en llamadas de dominio cruzado. Fallará silenciosamente y no se ejecutarán los parámetros de devolución de llamada "completa" o "error". – Meogi

3

404 errores se manejarán con la función anónima conectada a la propiedad error. Cualquier otra cosa que no sea una solicitud HTTP exitosa a la URL (es decir, 2xx) activará el método de error. A continuación se va a trabajar para su propósito:

error : function(jqXHR, textStatus, errorThrown) { 
    if(jqXHR.status == 404 || errorThrown == 'Not Found') 
    { 
     console.log('There was a 404 error.'); 
    } 
} 

Cuando se refieren a la eliminación de los successerror y funciones en la documentación de jQuery, se están refiriendo a los de la clase jqXHR, no las propiedades de $.ajax().

+0

¿Pero la codificación de esa función anónima de JayTee es correcta? Mi intento anterior simplemente puso una variable ajaxContent en la función paranthasis after. – Alan2

+0

La función de devolución de llamada acepta tres argumentos: el objeto jqXHR (en jQuery 1.4.x, XMLHttpRequest), una cadena que describe el tipo de error que ocurrió y un objeto de excepción opcional. Cuando se produce un error HTTP, errorThrown recibe la parte textual del estado HTTP, como "No encontrado" o "Error interno del servidor". – BenM

+0

He editado mi respuesta para incluir la sintaxis correcta ... – BenM