Sé que esta es una pregunta duplicada, pero ninguno de los otros me está ayudando en esto:
Sobre el siguiente Ajax:
$.ajax({ type: "POST", url: "url", data: { //data }, dataType: "json", success: function (data) { //do success logic }, error: function (req, status, error) { var err = req.responseText.Message; console.log(err); } });Necesito mostrar solo el mensaje de excepción devuelto por el servidor:
que es solo: "Error al procesar el recorrido o el mismo es inexistente"
pero el req.responseText es el siguiente:
responseText: "System.Exception: Error al procesar el recorrido o el mismo es inexistente\r\n at etc etc etc\r\n" Ya probé algunos enfoques como: response = jQuery.parseJSON( req.responseText ); pero esto falla en el análisis
o:
req.responseJSON.Messagepero muestra indefinido
No puedo mostrar solo el mensaje de excepción personalizado, ¿alguna idea?
Intente usar req.responseJSON.value , no req.responseJSON.Message . Funciona bien en mi lado.
mi codigo de prueba
código JavaScript
function ShowException() { $.ajax({ type: "POST", url: "/Home/ShowException", data: { type:1 }, dataType: "json", success: function (data) { alert(data.value); }, error: function (req, status, error) { var err = req.responseJSON.value; console.log(err); } }); }código C#
[HttpPost] public IActionResult ShowException(int type) { try { if (type == 1) { return Ok(Json("success")); } else { return NotFound(Json("404 not found")); } } catch (Exception ex) { return BadRequest(Json("456")); throw; } }