在vue中使用cookie記住用戶上次選擇的實例(本次例子中為下拉框)
最近工作中碰到一個需求,添加一條數(shù)據(jù)時,自動記住上次選擇的下拉框的數(shù)據(jù),剛開始覺得沒思路,后來請教了項目組長,組長直接一句,這不很簡單吧,直接用cookie,我:.......
好吧,都王的差不多了,于是經(jīng)過一番百度實踐,測試,總算是可以了,接下來就說說實踐以及一些坑!
開發(fā)環(huán)境: webpack+vue+java后臺
要實現(xiàn)這個小功能,其實只需要在vue中寫相應(yīng)的功能就可以了,并不需要在后臺寫什么,但是如果寫的不正確,后臺也是會報錯的,代碼如下:
先把這幾個方法寫上,刪除的看需求決定需不需要:
//設(shè)置cookie
setCookie(projectId,exdays) {
var exdate=new Date();//獲取時間
exdate.setTime(exdate.getTime() + 24*60*60*1000*exdays);//保存的天數(shù)
//字符串拼接cookie
window.document.cookie="projectId"+ "=" +projectId+";expires="+exdate.toGMTString();
},
//讀取cookie
getCookie:function () {
console.log(document.cookie);
let me=this;
if (document.cookie.length>0) {
var arr=document.cookie.split('; ');//這里顯示的格式需要切割一下自己可輸出看下
for(var i=0;i<arr.length;i++){
var arr2=arr[i].split('=');//再次切割
//判斷查找相對應(yīng)的值
if(arr2[0]=='projectId'){
me.workhourData.projectId=arr2[1];//保存到保存數(shù)據(jù)的地方
}
}
}
},
//清除cookie
clearCookie:function () {
this.setCookie("","",-1);//修改2值都為空,天數(shù)為負(fù)1天就好了
},
我這里是只需要一個projectId即可,實際中可以根據(jù)具體需求設(shè)置,
注意,這里有個坑,那就是中文,如果你需要存儲中文cookie,而不進行任何處理的話,那么后臺是會報錯的,
java.lang.IllegalArgumentException: Control character in cookie value or attribute
這個錯誤一般是中文編碼引起的,中文采用的是Unicode編碼,而英文采用的是ASCII編碼,當(dāng)Cookie保存中文的時候需要對中文進行編碼,而且從Cookie中取出內(nèi)容的時候也要進行解碼,所以必須特殊處理
escape(value) 編碼
cookievalue=unescape(value); 解碼
百度有恨多中方法,這里不多說!
然后就是在頁面每一次加載的時候去調(diào)用this.getCookie()方法就可以了,
還要記住一點是,保存的時候也要設(shè)置cookie,這樣才會生效,還有就是時間問題了,根據(jù)具體需求傳參即可!
最后需要說的時,如果一旦報錯或者不想要cookie了,可以手動清楚瀏覽器cookie!,這是最快的方式:

補充知識:vue 前后端分離調(diào)用后端數(shù)據(jù)(加深記憶)
1、在.vue文件中引入調(diào)用對應(yīng)后臺數(shù)據(jù)方法,并調(diào)用此方法
import {getAccount} from '../assets/js/index'
2、前端申請后臺數(shù)據(jù)(安裝axios依賴)
//上方引入的index.js
import axios from 'axios'
import {baseUrl} from "./config";
import $ from 'jquery'
import './base'
export const getAccount=()=>{
return axios.post(`${baseUrl}/index/index/index`).then(res=>{
return res.data;
})
}
//config.js
export const baseUrl='http://shagua.com';
//base.js
import axios from 'axios';
import qs from 'qs';
import router from '../../router'
axios.defaults.withCredentials=true; //允許跨域發(fā)送cookie
axios.defaults.transformRequest = [function(data) { //解析post數(shù)據(jù)
if(typeof data=='object'){
return qs.stringify(data);
}else{
return data;
}
}];
axios.defaults.transformResponse=[function(data){ //攔截response請求,做統(tǒng)一跳轉(zhuǎn)
data=JSON.parse(data);
if(data.status=='-99'){
router.push({path:'/login'});
}
return data;
}];
3、后端接收前端申請并返回數(shù)據(jù)(此處使用tp5,這里是允許訪問,后臺業(yè)務(wù)去對應(yīng)調(diào)用的方法里寫)
//跨域訪問的時候才會存在此字段
$origin = isset($_SERVER['HTTP_ORIGIN']) ? $_SERVER['HTTP_ORIGIN'] : '';
$allow_origin = array(
'http://localhost:8080',
);
if(in_array($origin, $allow_origin)){
header('Access-Control-Allow-Credentials: true');
header("Access-Control-Allow-Headers: *");
header('Access-Control-Allow-Origin:'.$origin);
header('Access-Control-Max-Age:3600');
}
以上這篇在vue中使用cookie記住用戶上次選擇的實例(本次例子中為下拉框)就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
- Vue下拉選擇框Select組件使用詳解(一)
- ant design vue中日期選擇框混合時間選擇器的用法說明
- Vue表單綁定的實例代碼(單選按鈕,選擇框(單選時,多選時,用 v-for 渲染的動態(tài)選項)
- 在vue中實現(xiàn)點擊選擇框阻止彈出層消失的方法
- vue select選擇框數(shù)據(jù)變化監(jiān)聽方法
- vuejs實現(xiàn)下拉框菜單選擇
- vue Treeselect下拉樹只能選擇第N級元素實現(xiàn)代碼
- vue操作下拉選擇器獲取選擇的數(shù)據(jù)的id方法
- vue省市區(qū)三聯(lián)動下拉選擇組件的實現(xiàn)
- Vue下拉選擇框Select組件使用詳解(二)
相關(guān)文章
Vue生產(chǎn)環(huán)境如何自動屏蔽console
這篇文章主要介紹了Vue生產(chǎn)環(huán)境如何自動屏蔽console問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
如何在Vue中使localStorage具有響應(yīng)式(思想實驗)
這篇文章主要介紹了如何在Vue中使localStorage具有響應(yīng)式,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07
前端記錄輸入框的歷史輸入記錄實現(xiàn)步驟(輸入框數(shù)據(jù)記憶功能)
這篇文章主要介紹了如何使用localStorage來記錄每個輸入框的歷史輸入記錄,并在用戶輸入時動態(tài)更新這些記錄,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-03-03
Vuepress 搭建帶評論功能的靜態(tài)博客的實現(xiàn)
這篇文章主要介紹了Vuepress 搭建帶評論功能的靜態(tài)博客的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02
淺談vue中document.getElementById()拿到的是原值的問題
這篇文章主要介紹了淺談vue中document.getElementById()拿到的是原值的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
vue+ElementUi+iframe實現(xiàn)輪播不同的網(wǎng)站
需要實現(xiàn)一個輪播圖,輪播內(nèi)容是不同的網(wǎng)站,并實現(xiàn)鼠標(biāo)滑動時停止輪播,當(dāng)鼠標(biāo)10秒內(nèi)不動時繼續(xù)輪播,所以本文給大家介紹了用vue+ElementUi+iframe實現(xiàn)輪播不同的網(wǎng)站,需要的朋友可以參考下2024-02-02

