cookie妙用1——頁面間傳值
這幾天,我在寫一個網站,我做前端頁面。然後一開始我把幾個結構一樣的頁面整合成一個頁面,然後通過Ajax向後臺獲取對應的資料後把不同的資料填進頁面框架裡面以生成“不同”的頁面。後來需求改了,有一個結構不一樣的頁面,而所有頁面之間要相互連結跳轉。問題來了,我要從那個獨立的頁面跳到被整合成一個一個頁面的幾個頁面中的一個時,我要怎麼區分是要跳到哪個“子”頁面呢?
於是我想,一個函式可以根據接收到的引數的不同而進行不同的處理,那我能不能向一個頁面傳引數而到達區分不同子頁面的目的呢?答案顯然是可以的,但是要怎麼傳呢?兩個不同的頁面的javascript貌似是在不同作用域,不能直接傳參。而雖然通過後臺是可以通過表單提交的方式吧引數傳給後臺,然後後臺再傳給另一個頁面,但是因為後臺不是我做的,這條路也被封了,怎麼辦?這時,我想到了cookie,因為cookie是存在瀏覽器的,而不同的頁面是可以訪問同一組cookie的(要在同一主機地址,做一些設定或許可以不同地址之間訪問,但我還不會用),所以我就想到了用cookie作為橋樑在兩個頁面之間傳值,這樣就不需要後臺配合了,於是我查了一下,找到了 document.cookie ,通過 document.cookie = ‘name=val’ 的方式可以可以設定cookie(這裡不用設定存活時間,因為在兩個頁面之間傳值的時候瀏覽器是不會關閉的,臨時cookie是可以存活的,如果想要在關閉瀏覽器後cookie還存活,就需要設定存活時間)。然後也可以通過 String = document.cookie 獲取cookie值組字串(格式:“name1=val1;name2=val2;name3=val3”),但是這樣只能獲取一個字串,還不能直接用,但是可以通過 String.split(";") 的方式把 String 分成數字符串組(每個字串陣列項為一個值對),每一個陣列項為("name=val"),好了,然後再用一次split("=")函式,就可以把名字和值區分開了。這樣就可以通過值名(name)來獲得對應的值(val)了。
好了,然後就這樣,當一個頁面要傳值給另一個頁面時,就可以先設定cookie,然後跳轉到另一個頁面,然後另一個頁面就可以通過獲取cookie的方式來獲取前一個頁面要傳過來的值了。