È 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?
risposta
(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.
potresti mostrare un backup per la tua dichiarazione? – FranXho
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 .
Se si dispone di un metodo server che può restituirlo a una chiamata Ajax, sì. – asawyer
Quale linguaggio lato server stai usando? Come viene tracciata la sessione? –
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