2011-11-07 19 views
7

Actualmente, si tengo un error con una solicitud de Ajax, como enviar un formulario (estoy usando ASP.NET MVC 3), se mostrará algo así como 'Error interno del servidor'.Mostrar los mensajes de error adecuados con jQuery AJAX

Pero si hago el envío sin utilizar Ajax, entonces .net mostrará el error real del servidor.

¿Alguna idea sobre cómo podría mostrar el error? Así que mis usuarios pueden informar del problema en lugar de sólo ser capaz de decir 'error interno del servidor'

Gracias

+4

Mostrar mensajes de error reales a los usuarios puede plantear problemas de seguridad. Es mejor darles una ID correspondiente a una excepción registrada en un DB. – SLaks

Respuesta

23

Aunque no recomendaría mostrando al usuario un número de error con el mensaje de error real de respuesta de esto es cómo se puede hacer esto mediante la adición de la devolución de llamada error

error: function(xhr,err){ 
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); 
    alert("responseText: "+xhr.responseText); 
} 

xhr es XmlHttpRequest.

readyState Los valores son 1: cargando, 2: cargado, 3: interactivo, 4: completo.

estado es el número de estado HTTP, es decir, 404: no encontrado, 500: error del servidor, 200: ok.

responseText es la respuesta del servidor; esto podría ser texto o JSON del servicio web o HTML del servidor web.

6

Este código reemplazará el contenido de la página actual con el error que volvió de la petición Ajax.

jQuery(document).ajaxError(function (event, request, settings) { 
    if (request.status === 500) { 
     $(document.body).html(request.responseText); 
    } else if (request.status === 401) { 
     // redirect to login, 401 means session is expired. 
     window.location.href = "login page url"; 
    } 
}); 
Cuestiones relacionadas