是否可以从JavaScript中读取动态变量的值,例如 httpRequest.getSession(“attr_name”)?
答案 0 :(得分:13)
(使用Javascript,我认为你的意思是浏览器中的客户端脚本。)
不,那是不可能的。 Session对象的内容永远不会离开服务器,因此客户端脚本无法直接读取Session数据。
如果要在浏览器中访问它,则必须从Session对象中读取数据并在响应中将其发送(例如在隐藏字段中),或者提供从中读取数据的Web服务。会话对象并返回浏览器。
答案 1 :(得分:3)
正如我在评论中所说,唯一的方法是进行某种Ajax调用并从服务器请求它。我不知道你使用的是后端,这是我在Asp.net MVC和jQuery中的表现。
(如果有轻微的语法错误,我道歉 - 不在编译器前面)
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>
或者,您可以随时将所需的值写入隐藏字段,并使用普通的javascript读取它们。