2012-03-19 15 views
8

¿Es posible leer el valor de una variable dinámica como httpRequest.getSession ("attr_name") desde un JavaScript?¿Puede JavaScript leer objeto de sesión HTTP?

+3

Si tiene un método de servidor que puede devolverlo a una llamada ajax, sí. – asawyer

+0

¿Qué idioma del lado del servidor estás usando? ¿Cómo se rastrea la sesión? –

+1

Si se refiere al lado del cliente JS: No. Si tiene algún entorno JS en su máquina servidor, puede ingresar esos parámetros en él. ¿Supongo que su lenguaje de servidor es Java? – Sirko

Respuesta

13

(Con Javascript, supongo que te refieres script de cliente en el navegador.)

No, eso no es posible. El contenido del objeto Session nunca abandona el servidor, por lo que el script del cliente no puede leer los datos de la sesión directamente.

Si desea acceder a él en el navegador, debe leer los datos del objeto Session y enviarlos en la respuesta (por ejemplo, en un campo oculto) o proporcionar un servicio web que lea datos de el objeto Session y vuelve al navegador.

+0

¿podría mostrar alguna copia de seguridad para su estado de cuenta? – FranXho

3

Como dije en mi comentario, la única manera sería algún tipo de llamada Ajax y solicitarla desde el servidor. No sé qué utilizar para respaldar, así es como lo haría en Asp.net MVC y jQuery.

(Si hay errores sintácticos mínimos, pido perdón - no delante de un compilador)

public class HomeController : Controller 
{ 

    //abstract the session code away, don't let the evil javascript touch 
    //it directly. Ideally this would all be in a seperate logic class or something. 
    public string NameAttribute 
    { 
     get 
     { 
      return Session["attr_name"] as string ?? string.empty; 
     } 
    } 
    [HttpGet] 
    public string GetNameAttribute() 
    { 
     return NameAttribute; 
    } 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 



<script> 
$(function(){ 
    $.get('home/GetNameAttribute', function(response) { 
     var name = response; //don't forget error checking, ommited 
    }); 
}); 
</script> 

Como alternativa, siempre se puede escribir los valores que necesita en campos ocultos, y leerlos con javascript normales .

Cuestiones relacionadas