Извлечение данных из XMLHttpRequest при событии ошибки $.Ajax

#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. Да, вы правы. Я приведу простой пример синтаксического анализа, чтобы преобразовать ваш ответ в полный ответ. Но все равно спасибо!