JavaScript可以读取HTTP会话对象吗?

时间:2012-03-19 13:41:14

标签: javascript httpsession

是否可以从JavaScript中读取动态变量的值,例如 httpRequest.getSession(“attr_name”)

2 个答案:

答案 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读取它们。