這兩天做一個小項目,想在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
連結複制在迅雷裡即可下載下傳