您好,登录后才能下订单哦!
vue中使用cookie实现记住用户上一次的选择?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
//设置cookie setCookie(projectId,exdays) { var exdate=new Date();//获取时间 exdate.setTime(exdate.getTime() + 24*60*60*1000*exdays);//保存的天数 //字符串拼接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('=');//再次切割 //判断查找相对应的值 if(arr2[0]=='projectId'){ me.workhourData.projectId=arr2[1];//保存到保存数据的地方 } } } }, //清除cookie clearCookie:function () { this.setCookie("","",-1);//修改2值都为空,天数为负1天就好了 },
我这里是只需要一个projectId即可,实际中可以根据具体需求设置,
注意,这里有个坑,那就是中文,如果你需要存储中文cookie,而不进行任何处理的话,那么后台是会报错的,
java.lang.IllegalArgumentException: Control character in cookie value or attribute
这个错误一般是中文编码引起的,中文采用的是Unicode编码,而英文采用的是ASCII编码,当Cookie保存中文的时候需要对中文进行编码,而且从Cookie中取出内容的时候也要进行解码,所以必须特殊处理
escape(value) 编码
cookievalue=unescape(value); 解码
百度有恨多中方法,这里不多说!
然后就是在页面每一次加载的时候去调用this.getCookie()方法就可以了,
还要记住一点是,保存的时候也要设置cookie,这样才会生效,还有就是时间问题了,根据具体需求传参即可!
最后需要说的时,如果一旦报错或者不想要cookie了,可以手动清楚浏览器cookie!,这是最快的方式:
补充知识:vue 前后端分离调用后端数据(加深记忆)
1、在.vue文件中引入调用对应后台数据方法,并调用此方法
import {getAccount} from '../assets/js/index'
2、前端申请后台数据(安装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; //允许跨域发送cookie axios.defaults.transformRequest = [function(data) { //解析post数据 if(typeof data=='object'){ return qs.stringify(data); }else{ return data; } }]; axios.defaults.transformResponse=[function(data){ //拦截response请求,做统一跳转 data=JSON.parse(data); if(data.status=='-99'){ router.push({path:'/login'}); } return data; }];
3、后端接收前端申请并返回数据(此处使用tp5,这里是允许访问,后台业务去对应调用的方法里写)
//跨域访问的时候才会存在此字段 $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'); }
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。