Saltar al contenido

Redirigir a la acción con JsonResult

Solución:

Si usa AJAX para solicitar una página, no se puede redirigir en el navegador. Debe responder un código de estado y luego usar javascript para redirigir al frente, como este

[HttpPost]
public JsonResult GetUserTraj()
{
    if (Session["UserName"] != null)
    {
        var userTrajList =
            DBManager.Instance.GetUserTraj(Session["UserName"].ToString());
        return Json(userTrajList);
    }
    else
    {
        //RedirectToAction("Login", "Login");
        return Json(new {code=1});
    }
}

Debe escribir esta condición dentro de su llamada exitosa de Ajax para volver a cargar la pantalla de inicio de sesión,

if(result.code ===1){
    window.location = 'yourloginpage.html'
}

No puede redirigir al usuario a una nueva página usando ajax. Para esto, debe enviar alguna bandera en el lado del cliente y luego debe usar esa bandera para identificar que la sesión ha expirado. El siguiente código le ayudará:

[HttpPost]
public JsonResult GetUserTraj()
{
    if (Session["UserName"] != null)
    {
        var userTrajList = DBManager.Instance.GetUserTraj(Session["UserName"].ToString());
        return Json(new { Success = true, Data = userTrajList});
    }
    else
    {
        return Json(new { Success = false, Message = "Session Expired"});
    }
}

jQuery

$.ajax({
  url: "any url",
  dataType: '',
  contentType: "------",
  success: function(response){
    if(response.Success){
     // do stuff
    }else{
    window.location.href = "https://foroayuda.es/YourLoginURL.aspx"
    }
  }
});
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *