这两天做一个小项目,想在JQ中操作session,百度后出现了好多类似于这样的操作,就是先导入个jqSession,然后使用如下图的方法.
![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLiAzNvwVZ2x2bzNXak9CX90TQNNkRrFlQKBTSvwFbslmZvwFMwQzLcVmepNHdu9mZvwFVywUNMZTY18CX052bm9CX90zdORTWU5EMRpXT6V1MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2LcRHelR3LcJzLctmch1mclRXY39zN0YDNzQDNzEjNwYDM4EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
但是在使用后,发生了错误,经检验发现:
他的这个方法是有局限性的.
无法通过此方法去操作 采用其他方法设置的 session.
举例证明:
<script type="text/javascript">
$('a').click(function(){
alert("11");
var y = '<%=request.getSession().getAttribute("uname") %>';
alert(y); //弹出admin,说明已经设置好了session中的k-v值
var i = $.session.get("uname");
alert(i); //弹出undefined,但是并没有取到相关的值
$.session.set("uname",y);
var i = $.session.get("uname");
alert(i); //弹出admin,通过$.session.set()才能够取到
$.session.remove("uname");
var i = $.session.get("uname");
alert(i); //undefined,移除后为null
var y = '<%=request.getSession().getAttribute("uname") %>';
alert(y); //admin, 去无法将req中的session中的k-v值移除
window.parent.location.replace("Login.jsp");
})
</script>
通过代码发现,$.session的这种方式 ,只能操作其自身的,也就是说,如果要使用这种方式,整个项目都要采用JQSession.
与是不是在同一页面无关.
例如:
我在前一页采用jqsession方式设置好后,
<script type="text/javascript">
$('a').click(function(){
alert("11");
var y = '<%=request.getSession().getAttribute("uname") %>';
alert(y); //弹出admin,说明就算在前一页用$.session方式,后一页采用req是依然取不到
var i = $.session.get("uname");
alert(i); //弹出qqqqq,获取到了
})
</script>
最后总结:
jqSession是一个好的方式,但是在运用的时候要整个项目都要采用,不然会出现偏差的.
jqSession链接:https://ciphertrick.com/demo/jquerysession/js/jquerysession.js
链接复制在迅雷里即可下载