在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 相关文章推荐
图片按比例缩放函数
Jun 26 Javascript
javascript之querySelector和querySelectorAll使用介绍
Dec 20 Javascript
关于extjs4如何获取grid修改后的数据的问题
Aug 07 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
Nov 08 Javascript
AngularJS基础知识
Dec 21 Javascript
javascript实现对表格元素进行排序操作
Nov 18 Javascript
巧方法 JavaScript获取超链接的绝对URL地址
Jun 14 Javascript
使用JS实现图片展示瀑布流效果(简单实例)
Sep 06 Javascript
js下载文件并修改文件名
May 08 Javascript
原生JS实现网页手机音乐播放器 歌词同步播放的示例
Feb 02 Javascript
关于微信小程序登录的那些事
Jan 08 Javascript
JS基于开关思想实现的数组去重功能【案例】
Feb 18 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
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
SWFUpload与CI不能正确上传识别文件MIME类型解决方法分享
2011/04/18 PHP
浅析php中抽象类和接口的概念以及区别
2013/06/27 PHP
thinkphp浏览历史功能实现方法
2014/10/29 PHP
Laravel中使用阿里云OSS Composer包分享
2015/02/10 PHP
php伪静态验证码不显示的解决方案
2019/09/26 PHP
jQuery版Tab标签切换
2011/03/16 Javascript
JQuery Tips相关(1)----关于$.Ready()
2014/08/14 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记9)
2015/12/24 Javascript
JavaScript必知必会(七)js对象继承
2016/06/08 Javascript
js判断checkbox是否选中个数的方法(超简单)
2016/08/19 Javascript
使用原生js编写一个简单的框选功能方法
2019/05/13 Javascript
vue路由守卫+登录态管理实例分析
2019/05/21 Javascript
vue点击自增和求和的实例代码
2019/11/06 Javascript
three.js利用射线Raycaster进行碰撞检测
2020/03/12 Javascript
v-slot和slot、slot-scope之间相互替换实例
2020/09/04 Javascript
vue 获取url参数、get参数返回数组的操作
2020/11/12 Javascript
webpack4从0搭建组件库的实现
2020/11/29 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
pycharm 使用心得(七)一些实用功能介绍
2014/06/06 Python
python的类方法和静态方法
2014/12/13 Python
python numpy函数中的linspace创建等差数列详解
2017/10/13 Python
python导入坐标点的具体操作
2019/05/10 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
python爬虫把url链接编码成gbk2312格式过程解析
2020/06/08 Python
python代数式括号有效性检验示例代码
2020/10/04 Python
UGG雪地靴德国官网:UGG德国
2016/11/19 全球购物
Mansur Gavriel官网:纽约市的一个设计品牌
2019/05/02 全球购物
英国家具、照明、家居用品网上商店:Wayfair.co.uk
2020/02/13 全球购物
Linux开机引导的步骤是什么
2014/02/26 面试题
感恩母亲节活动方案
2014/03/04 职场文书
小学一年级评语大全
2014/04/22 职场文书
媒体宣传策划方案
2014/05/25 职场文书
员工工作表扬信
2015/05/05 职场文书
MongoDB支持的数据类型
2022/04/11 MongoDB