#asp.net-mvc #jquery
#asp.net-mvc #jquery
Вопрос:
Как следует из названия, я хочу получить значения моих данных Json из XMLHttpRequest. Я уже знаю, как это сделать, используя обычное событие успеха успеха $.Ajax, но я хочу получить его значения из события ошибки. Вещь, которую я заметил, не так просто найти все типы типов XMLHttpRequest.
Чтобы объяснить немного больше, вот сценарий: после некоторого бездействия пользовательские сеансы истекают. Если он попытается выполнить какие-либо операции с помощью вызова Ajax, он будет перенаправлен на страницу входа в систему. Я обрабатываю эту ошибку тайм-аута сеанса в конкретном фильтре, который реализует метод onException .
Хотя я могу сделать это с помощью своего рода взлома (вручную установив код ответа HTTP), я бы хотел сделать это «надлежащим образом», без взломов.
Фрагмент кода метода onException
filterContext.ExceptionHandled = true;
// If this is an ajax request, return the exception in the response
if (filterContext.HttpContext.Request.IsAjaxRequest())
{
//If the session has expired, throws a SESSION TIMEOUT error
if (Session["UserLogged"] == null)
{
//The hack mentioned before
filterContext.HttpContext.Response.StatusCode = 502;
filterContext.Result = new JsonResult()
{
Data = new { success = false, errorType = "SESSION_TIMEOUT" ,error = filterContext.Exception.ToString() },
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
}
}
Итак, используя простое событие ошибки $.Ajax, как я мог бы повторно получить данные из filterContext.Result
? В частности errorType
, параметр.
Ответ №1:
Вы должны иметь возможность анализировать данные JSON из свойства jqXHR responseText в вашем обработчике ошибок.
error: function(jqXHR, textStatus, errorThrown) {
alert('jqXHR.responseText = ' jqXHR.responseText);
}
Комментарии:
1. Добавлен пример для ответа. Оттуда вам нужно будет проанализировать ответ для данных json. Я не уверен, каким будет формат.
2. Да, вы правы. Я приведу простой пример синтаксического анализа, чтобы преобразовать ваш ответ в полный ответ. Но все равно спасибо!