2012-03-19 12 views
8

È possibile leggere il valore di una variabile dinamica come httpRequest.getSession ("attr_name") da un JavaScript?È possibile che JavaScript abbia letto l'oggetto Session HTTP?

+3

Se si dispone di un metodo server che può restituirlo a una chiamata Ajax, sì. – asawyer

+0

Quale linguaggio lato server stai usando? Come viene tracciata la sessione? –

+1

Se si intende JS lato client: No. Se si dispone di un ambiente JS sulla macchina server, è possibile alimentare tali parametri. Presumo che la lingua del tuo server sia Java? – Sirko

risposta

13

(con JavaScript, suppongo che si intende script client nel browser.)

No, questo non è possibile. Il contenuto dell'oggetto Session non lascia mai il server, quindi lo script client non può leggere direttamente i dati della sessione.

Se si desidera accedervi nel browser, è necessario leggere i dati dall'oggetto Session e inviarli nella risposta (ad esempio in un campo nascosto) oppure fornire un servizio Web che legge i dati da l'oggetto Session e ritorna al browser.

+0

potresti mostrare un backup per la tua dichiarazione? – FranXho

3

Come ho detto nel mio commento, l'unico modo sarebbe una sorta di chiamata Ajax e la richiesta dal server. Non so cosa renda il tuo utilizzo, ecco come lo farei in Asp.net MVC e jQuery.

(Se non ci sono errori di sintassi minori, mi scuso - non davanti a un compilatore)

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> 

In alternativa, si può sempre scrivere i valori necessari nei campi nascosti, e leggerli con javascript normale .