Как передать пользовательскую информацию об ошибках из метода ASP.NET MVC3 JsonResult
в error
(или success
или complete
, если необходимо) функцию jQuery.ajax()
? В идеале я хотел бы иметь возможность:
- По-прежнему выдавать ошибку на сервере (это используется для ведения журнала)
- Получить пользовательскую информацию об ошибке на клиенте
Вот базовая версия моего кода:
Метод контроллера JsonResult
public JsonResult DoStuff(string argString)
{
string errorInfo = "";
try
{
DoOtherStuff(argString);
}
catch(Exception e)
{
errorInfo = "Failed to call DoOtherStuff()";
//Edit HTTP Response here to include 'errorInfo' ?
throw e;
}
return Json(true);
}
JavaScript
$.ajax({
type: "POST",
url: "../MyController/DoStuff",
data: {argString: "arg string"},
dataType: "json",
traditional: true,
success: function(data, statusCode, xhr){
if (data === true)
//Success handling
else
//Error handling here? But error still needs to be thrown on server...
},
error: function(xhr, errorType, exception) {
//Here 'exception' is 'Internal Server Error'
//Haven't had luck editing the Response on the server to pass something here
}
});
Вещи, которые я пробовал (это не сработало):
- Возврат информации об ошибке из блока
catch
- Это работает, но исключение не может быть выбрано
- Редактирование ответа HTTP в блоке
catch
- Затем проверили
xhr
в обработчике ошибок jQuery -
xhr.getResponseHeader()
и т.д. содержит страницу ошибок ASP.NET по умолчанию, но ни одна из моих сведений - Я думаю, что это возможно, но я просто сделал это неправильно?
- Затем проверили