Почему jquery ajax вызывает ошибку после тайм-аута сессии в asp.net mvc? - PullRequest
2 голосов
/ 08 июня 2010

когда в моей переменной сеанса есть значение, мои ajax-вызовы работают должным образом ... Но когда время сеанса истекло, похоже, не работает, возвращая пустой результат json ....

public JsonResult GetClients(int currentPage, int pageSize)
        {
            if (Session["userId"]!=null)
            {
                var clients = clirep.FindAllClients(Convert.ToInt32(Session["userId"])).AsQueryable();
                var count = clients.Count();
                var results = new PagedList<ClientBO>(clients, currentPage - 1, pageSize);
                var genericResult = new { Count = count, Results = results ,isRedirect=false};
                return Json(genericResult);
            }
            else
            {
                var genericResult = new {redirectUrl = Url.Action("Create", "Registration"), isRedirect = true };
                return Json(genericResult);
            }

        }

Однако остальная часть не работает ....

   success: function(data) {
       alert(data.Results);
        if (data.isRedirect) {
            window.location.href = data.redirectUrl;
        }
   }

EDIT:

Мой global.asax имеет это,

public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Clients",                                             
                "Clients/{action}/{id}",                          
                new { controller = "Clients", action = "Index", id = "" }  
            );

            routes.MapRoute(
               "Registrations",                                              
               "{controller}/{action}/{id}",                          
               new { controller = "Registration", action = "Create", id = "" } 
           );
        }

Ответы [ 2 ]

2 голосов
/ 16 июня 2010

Попробуйте перенаправить любой ответ:

success: function(data) {
  location = 'http://www.google.ca';
}

если это перенаправляет, вы можете исключить эту возможность

Затем попробуйте явно сравнить переменную и сохранить URL-адрес жестко запрограммированным на данный момент:

success: function(data) {
    if (data.isRedirect && data.isRedirect === true) {
        alert('must redirect to ' + data.redirectUrl);
        location = 'http://www.google.ca';
    }
    else
    {
        alert('not redirecting ' + );
    }
}

Вы также можете увидеть, что data.redirectUrl возвращает

Возвращайся ко мне после этого ...

0 голосов
/ 15 июня 2010

Если время сеанса истекло, объект Session будет нулевым. Вы пытаетесь получить доступ к этому объекту, не проверяя, существует ли он, что вызовет исключение.

У вас есть функция обратного вызова onError?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...