2010-06-08 3 views
2

quand il y a une valeur dans ma variable de session mes appels ajax fonctionnent correctement ... Mais quand une session est TimedOut il ne semble pas fonctionner retour résultat JSON vide ....Pourquoi les appels jquery ajax échouent après le délai d'expiration de la session dans asp.net mvc?

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); 
      } 

     } 

Cependant d'autre part does'nt semblent fonctionner ....

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

EDIT:

Mon Global.asax a cela,

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 = "" } 
      ); 
     } 
+0

Que fait-il réellement lorsque la session a expiré? Est-ce qu'il retourne un objet JSON? –

+0

@matthew ya il renvoie un objet json mais il n'est pas redirigé vers ma vue Login à la place il reste dans la même vue ... –

+0

Ouvrez votre page dans Firefox avec Firebug et mettez un point d'arrêt sur le sur l'alerte (données. Résultats), vous devriez alors pouvoir inspecter l'objet. Typiquement avec javascript, si une erreur survient, l'exécution du bloc de script courant se termine. Vous devez savoir si les propriétés auxquelles vous essayez d'accéder sont réellement disponibles dans l'objet. Aussi, essayez simplement "location.href" pour voir si cela fait une différence. –

Répondre

2

Essayez de rediriger quelle que soit la réponse est:

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

si ce réoriente, vous pouvez éliminer cette possibilité

Ensuite, essayez de comparer explicitement la variable et de garder l'URL hardcoded pour le moment:

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

Vous pouvez aussi voir ce que data.redirectUrl retours

Revenez à moi après cela ...

+0

ya je vais revenir à vous une fois que je l'ai terminé ... –

+0

merci, il a travaillé ... –

+0

Cool! Content de travailler maintenant. –

0

Si la session a expiré, l'objet Session sera null. Vous tentez d'accéder à cet objet sans vérifier s'il existe une exception.

Avez-vous une configuration de fonction de rappel "onError"?

+0

ya je n'ai pas une fonction de rappel "onError" de configuration ... Que dois-je faire dans cette fonction de rappel "onError"? Dois-je rediriger mon utilisateur à la page de connexion .. –

+0

Faites ce que vous devez faire quand une erreur se produit, mais pour le développement, je suggère que vous avez probablement besoin de l'alerter à l'écran en quelque sorte. – starskythehutch

Questions connexes