Ajax visor de documentos Hosting Drupal
¿Hay alguna manera de que pueda mostrar mensajes de excepción personalizada como una alerta en mi mensaje de error jQuery AJAX?
Por ejemplo, si quiero lanzar una excepción en el lado servidor a través de puntales por arrojar nueva ApplicationException ( "nombre de usuario ya existe") ;. Quiero atrapar a este mensaje (nombre de usuario ya existe ') en el mensaje de error jQuery AJAX.
En la segunda alerta, donde alertar al error que se produce, estoy consiguiendo indefinido y el código de estado es de 500.
No estoy seguro de dónde voy mal. ¿Qué puedo hacer para solucionar este problema?
Una solución general / reutilizable
Se proporciona esta respuesta para futura referencia a todos aquellos que tropiezan con este problema. Solución consiste en dos cosas:
- Costumbre ModelStateException excepción de que se tira cuando la validación falla en el servidor (modelo errores de validación de los informes de estado cuando usamos las anotaciones de datos y el uso de parámetros de acción controladora mecanografiada fuertes)
- Personalizada de error acción del controlador HandleModelStateExceptionAttribute filtro que atrapa excepción personalizada y devuelve el estado de error HTTP con error de estado modelo en el cuerpo
Esto proporciona la infraestructura óptima para jQuery Ajax llama a utilizar todo su potencial con éxito y error manipuladores.
código del lado del cliente
código del lado del servidor
Todo el problema se detalla en esta entrada del blog donde se puede encontrar todo el código para ejecutar esta en su aplicación.
Creo que el manejador de respuesta Ajax utiliza el código de estado HTTP para comprobar si hubo un error.
Así que si usted acaba de lanzar una excepción de Java en el código del lado del servidor, pero entonces la respuesta HTTP no tener un código de estado 500 jQuery (o en este caso, probablemente, el objeto XMLHttpRequest) acaba de asumir que todo estaba bien.
Digo esto porque he tenido un problema similar en ASP.NET donde yo estaba tirando algo así como un ArgumentException ( "No sé qué hacer.") Pero el controlador de errores no estaba disparando.
entonces fijo el Response.StatusCode a cualquiera de 500 o 200 si tenía un error o no.
contestada 19 de Dic '08 a las 14:11
jQuery.parseJSON es útil para el éxito y error.
contestado Ago 11 '11 a las 22:18
Lanzar una nueva excepción en el servidor usando:
Creo que el statusDescription se devuelve a la llamada Ajax.
contestado Mar 6 '14 a las 18:07
Si hay alguna forma es presentar la validación
basta con utilizar el resto del código
respondido 9 Mar '14 a las 17:31
A pesar de que han pasado muchos años desde que se hizo esta pregunta, todavía no encuentro xhr.responseText como la respuesta que estaba buscando. Me volvió cadena en el siguiente formato:
lo que definitivamente no quiero mostrar a los usuarios. Lo que estaba buscando algo, como a continuación:
xhr.responseJSON.message me da el mensaje exacto del objeto JSON que se puede mostrar a los usuarios.
contestada 24 Jun '16 a las 2:05
En primer lugar tenemos que establecer
Además de que a nivel jQuery en la parte de error que necesita para analizar la respuesta de error que contiene una excepción como:
Luego, utilizando r.Message puede mostrar actully texto de la excepción.
respondido 9 May '12 a las 8:41
Tiene un objeto JSON de la excepción lanzada, en el objeto XHR. Solo usa
El objeto JSON exponer otras dos propiedades: 'ExceptionType' y 'StackTrace'
contestada 23 de febrero a las 10:33
2017 Pila de Exchange, Inc