Мне удалось получить настоящее сообщение об ошибке раньше, когда я использовал веб-сервисы jquery ajax + asp.net. Однако тот же код внутри jquery $ ajax error больше не работает.
Внутри моего .js у меня есть
$.ajax({
contentType: 'application/json, charset=utf-8',
type: "POST",
url: "/Controller/DoSomething",
data: JSON.stringify({ varname: varvalue }),
cache: false,
dataType: "json",
success: function (wo) {
alert('yay!');
},
error: function (xhr) {
alert('error');
if (xhr.responseText) {
var err = JSON.parse(xhr.responseText);
if (err) {
alert(err.Message);
}
else {
alert("Unknown server error, please try again!");
}
}
}
});
Внутри моего контроллера у меня есть
public JsonResult DoSomething(string folderno)
{
CustomObject obj;
//get the obj value from repository here
throw new Exception("my test error message");
return Json(obj);
}
Я посмотрел на Firebug, и кажется, что я получаю
Ошибка «JSON.parse: неожиданный символ».
То, что я пытаюсь сделать здесь, - это подделать ситуацию, когда получение obj из репозитория вызывает исключение. Очевидно, что return Json(obj)
никогда не будет достигнуто.
Мой вопрос: как мне справиться с этой ситуацией и перехватить сообщения об ошибках на стороне JS? Нужно ли что-то делать в моем контроллере?
В моей более ранней установке веб-служб Jquery + asp.net я мог выбросить исключение внутри метода веб-службы (как показано в моем действии сейчас), и оно могло бы попасть в мою ошибку ajax, и сообщение об ошибке будет разобрали.
Теперь, похоже, мне нужно поймать исключение и упаковать в себя .... вопрос в том, как? И нужно ли делать это внутри каждого действия? Это похоже на большую работу.