js頁面刷新以后全局變量無效的問題


場景:
A頁面和B頁面是兩個不同的html。
B頁面以彈窗的形式顯示在A頁面上。

需求:B頁面需要存儲一些數據,每次B頁面刷新時,數據回顯,每次A頁面刷新時,數據重置。

我之前弱智一般的解決辦法:
在A.js中放個全局變量,把B.js里面的數據存進去。
每次B頁面刷新,就去A.js里面取數據。

當時我是不知道頁面刷新就不存在全局變量了,還疑惑了半天我的變量呢我的變量我那么大一個全局變量呢 = =

然后我看着控制台的Network,看着每次頁面刷新所有.js文件重新加載,頓悟。

我這個SB。

所以最后想了想,決定用cookie保存B.js里面的數據,在A.js里面刷新。

對不起,小土狗真的沒見過cookie。

解決方法

1.把需要的數據存成json。
var json = {};
json["key1"].value1 = "abc";
json["key1"].value2 = "def";

2.用cookie保存
// 先把json轉化成字符串
var str = "sTag"+ JSON.stringify(json) + "eTag";
document.cookie = "name" + "=" + str;

這里我為什么要加個sTag tag呢,因為獲取cookie的時候會把所有的cookie全部返回,我打個標簽到時候方便切割,害,我要這名字有🥚用。

3.這樣就可以在控制台的application→cookie里面看到啦。

4.取cookie

	// 判斷cookie是否存在
	if(document.cookie.indexOf("name") != -1){
		// cookie存在,拿到數據
		var cookie = document.cookie;
		var sIndex = cookie.indexOf("sTag")+4;
		var eIndex = cookie.indexOf("eTag")-1;
		var str = cookie.substring(sIndex,eIndex) + '}';
		var echoValueJson = JSON.parse(str);

切割字符串以后不要忘記收尾哈,加個}

5.清空cookie
document.cookie = "name" + "=" + "";

重名會被覆蓋,沒覆蓋可能路徑有問題哈。

剛剛寫着寫着不知道為什么突然想要跟hr提漲薪,因為我就要從家里搬出來住了,越想工資越低,不知道有沒有漲薪空間。

哎,最近感情也不太順利,希望接下來一切都要好點。

當然最重要還是漲薪。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM