Как отловить ошибку Ajax при использовании вкладок пользовательского интерфейса Jquery вместе с пользовательским обработчиком ошибок
Я использую вкладки Jquery UI в моем веб-приложении asp.net mvc. Мои вкладки работают хорошо.
Но проблема в том, что когда возникает ошибка ajax, она должна быть перехвачена и ответ JSON должен быть возвращен.
Я использую обработчик CustomError поверх атрибута MVC HandleError следующим образом:
public class CustomHandleErrorAttribute : HandleErrorAttribute
{
public override void OnException(ExceptionContext filterContext)
{
if (filterContext.ExceptionHandled || !filterContext.HttpContext.IsCustomErrorEnabled)
{
return;
}
if (new HttpException(null, filterContext.Exception).GetHttpCode() != 500)
{
return;
}
if (!ExceptionType.IsInstanceOfType(filterContext.Exception))
{
return;
}
// if the request is AJAX return JSON else view.
if (filterContext.HttpContext.Request.Headers["X-Requested-With"] == "XMLHttpRequest")
{
filterContext.Result = new JsonResult
{
JsonRequestBehavior = JsonRequestBehavior.AllowGet,
Data = new
{
error = true,
message = filterContext.Exception.Message
}
};
}
else
{
var controllerName = (string)filterContext.RouteData.Values["controller"];
var actionName = (string)filterContext.RouteData.Values["action"];
var model = new HandleErrorInfo(filterContext.Exception, controllerName, actionName);
filterContext.Result = new ViewResult
{
ViewName = View,
MasterName = Master,
ViewData = new ViewDataDictionary<HandleErrorInfo>(model),
TempData = filterContext.Controller.TempData
};
}
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = 500;
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
}
}
Таким образом, если ошибка происходит, и это ajax-запрос, то вышеприведенный метод сгенерирует ответ JSON.
Но я изо всех сил пытаюсь выяснить, как поймать этот ответ JSON и показать его на стороне клиента.
Пожалуйста, помогите.. Я попытался использовать ajaxoptions с вкладками пользовательского интерфейса следующим образом:
$(document).ready(function () {
$('#tabs').tabs({
activate: function (event, ui) {
ui.oldPanel.empty();
},
ajaxOptions: { success: Success, error: Failure }
});
$('#tabs').css('display', 'block');
$(function () {
$(this).ajaxStart(function () {
$("#ajaxLoading").show();
});
$(this).ajaxStop(function () {
$("#ajaxLoading").hide();
});
});
});
function Success(data) {
alert("Successfully loaded the tabs");
}
function Failure() {
alert("Some thing wrong had happened");
}
пожалуйста, помогите.. о том, как получить этот ошибочный ответ JSON и показать соответствующее предупреждение для конечного пользователя..
1 ответ
Я нашел решение как это:
$.ajaxSetup({
type: "GET",
cache: false,
error: function (e) {
var Error = e.responseText;
var ErrorCode= xx;
alert("Sorry, An Error has been occured while processing your request " + Error);
}
});
я использовал ajaxSetup()
получить ответ со стороны сервера.
Надеюсь это поможет...