when there is a value in my session variable my ajax calls work properly... But when a session is timedout it doesn't seem to work returning empty json result....
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);
}
}
However else part does'nt seem to work....
success: function(data) {
alert(data.Results);
if (data.isRedirect) {
window.location.href = data.redirectUrl;
}
}
EDIT:
My global.asax has this,
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 = "" }
);
}
If the Session has timed out out then the Session object will be null. You are attempting to access this object without checking if it exists which will be throwing an exception.
Do you have an "onError" callback function setup?
Try to redirect whatever the response is:
if that redirects, you can eliminate that possibility
Then try to explicitely compare the variable and keep the URL hardcoded for the moment:
You can also see what
data.redirectUrl
returnsComke back to me after that...