在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)


Posted in Javascript onSeptember 11, 2020

最近工作中碰到一个需求,添加一条数据时,自动记住上次选择的下拉框的数据,刚开始觉得没思路,后来请教了项目组长,组长直接一句,这不很简单吧,直接用cookie,我:.......

好吧,都王的差不多了,于是经过一番百度实践,测试,总算是可以了,接下来就说说实践以及一些坑!

开发环境: webpack+vue+java后台

要实现这个小功能,其实只需要在vue中写相应的功能就可以了,并不需要在后台写什么,但是如果写的不正确,后台也是会报错的,代码如下:

先把这几个方法写上,删除的看需求决定需不需要:

//设置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中使用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');
}

以上这篇在vue中使用cookie记住用户上次选择的实例(本次例子中为下拉框)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript js cookie的存储,获取和删除
Dec 29 Javascript
TinyMCE 新增本地图片上传功能
Nov 05 Javascript
2014 年最热门的21款JavaScript框架推荐
Dec 25 Javascript
AngularJS入门教程之更多模板详解
Aug 19 Javascript
实例分析浏览器中“JavaScript解析器”的工作原理
Dec 12 Javascript
JS实现淡入淡出图片效果的方法分析
Dec 20 Javascript
ajax请求+vue.js渲染+页面加载的示例
Feb 11 Javascript
浅谈Vue 数据响应式原理
May 07 Javascript
vue+axios+mock.js环境搭建的方法步骤
Aug 28 Javascript
vue安装和使用scss及sass与scss的区别详解
Oct 15 Javascript
微信小程序开发中var that =this的用法详解
Jan 18 Javascript
vue中实现动态生成二维码的方法
Feb 21 Javascript
请求时token过期自动刷新token操作
Sep 11 #Javascript
vue+axios 拦截器实现统一token的案例
Sep 11 #Javascript
Vue axios获取token临时令牌封装案例
Sep 11 #Javascript
Vue-cli4 配置 element-ui 按需引入操作
Sep 11 #Javascript
vue 子组件和父组件传值的示例
Sep 11 #Javascript
jQuery实现朋友圈查看图片
Sep 11 #jQuery
详解webpack的文件监听实现(热更新)
Sep 11 #Javascript
You might like
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
php实现的ping端口函数实例
2014/11/12 PHP
PHP中call_user_func_array回调函数的用法示例
2016/11/26 PHP
Laravel框架数据库迁移操作实例详解
2020/04/06 PHP
Windows Live的@live.com域名注册漏洞 利用代码
2006/12/27 Javascript
33种Javascript 表格排序控件收集
2009/12/03 Javascript
JavaScript 学习初步 入门教程
2010/03/25 Javascript
javascript基础知识大集锦(二) 推荐收藏
2011/01/13 Javascript
jquery通过visible来判断标签是否显示或隐藏
2014/05/08 Javascript
jQuery常用操作方法及常用函数总结
2014/06/19 Javascript
Javascript动画的实现原理浅析
2015/03/02 Javascript
jquery序列化方法实例分析
2015/06/10 Javascript
JavaScript动态提示输入框输入字数的方法
2015/07/27 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
Bootstrap编写一个兼容主流浏览器的受众门户式风格页面
2016/07/01 Javascript
Select2.js下拉框使用小结
2016/10/24 Javascript
JS解析url查询参数的简单代码
2017/08/06 Javascript
使用vue-router beforEach实现判断用户登录跳转路由筛选功能
2018/06/25 Javascript
Angular resolve基础用法详解
2018/10/03 Javascript
Node.js API详解之 module模块用法实例分析
2020/05/13 Javascript
[58:54]EG vs RNG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
python 实现UTC时间加减的方法
2018/12/31 Python
详解python中的time和datetime的常用方法
2019/07/08 Python
Win10+GPU版Pytorch1.1安装的安装步骤
2019/09/27 Python
pycharm sciview的图片另存为操作
2020/06/01 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
django inspectdb 操作已有数据库数据的使用步骤
2021/02/07 Python
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
怀旧香味蜡烛:Homesick
2019/11/02 全球购物
2015公务员年度考核评语
2015/03/25 职场文书
无工作证明怎么写
2015/06/15 职场文书
创业计划书之外语培训班
2019/11/02 职场文书
用Python将库打包发布到pypi
2021/04/13 Python
javascript实现计算器功能详解流程
2021/11/01 Javascript