在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 相关文章推荐
HTML颜色选择器实现代码
Nov 23 Javascript
Jquery为单选框checkbox绑定单击click事件
Dec 18 Javascript
jQuery简单实现禁用右键菜单
Mar 10 Javascript
javascript学习小结之prototype
Dec 03 Javascript
js父页面中使用子页面的方法
Jan 09 Javascript
初识简单却不失优雅的Vue.js
Sep 12 Javascript
微信小程序使用第三方库Immutable.js实例详解
Sep 27 Javascript
JS中BOM相关知识点总结(必看篇)
Nov 22 Javascript
Node.js使用NodeMailer发送邮件实例代码
Mar 06 Javascript
使用vue.js写一个tab选项卡效果
Mar 25 Javascript
JavaScript中reduce()的5个基本用法示例
Jul 19 Javascript
手机浏览器唤起微信分享(JS)
Oct 11 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
星际初学者游戏中永远要做的事
2020/03/04 星际争霸
Terran兵种对照表
2020/03/14 星际争霸
Drupal简体中文语言包安装教程
2014/09/27 PHP
php常用经典函数集锦【数组、字符串、栈、队列、排序等】
2019/08/23 PHP
javascript对象的property和prototype是这样一种关系
2007/03/24 Javascript
JavaScript 基础知识 被自己遗忘的
2009/10/15 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
基于jQuery的可用于选项卡及幻灯的切换插件
2011/03/28 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
JS实现图片产生波纹一样flash效果的方法
2015/02/27 Javascript
使用JQuery实现智能表单验证功能
2016/03/08 Javascript
详解JavaScript跨域总结与解决办法
2016/10/31 Javascript
微信小程序 设置启动页面的两种方法
2017/03/09 Javascript
vue cli 全面解析
2018/02/28 Javascript
js实现轮播图的完整代码
2020/10/26 Javascript
vue 纯js监听滚动条到底部的实例讲解
2018/09/03 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
Three.js实现简单3D房间布局
2018/12/30 Javascript
详解VSCode配置启动Vue项目
2019/05/14 Javascript
JS 逻辑判断不要只知道用 if-else 和 switch条件判断(小技巧)
2020/05/27 Javascript
通过实例了解JS执行上下文运行原理
2020/06/17 Javascript
微信小程序实现弹幕墙(祝福墙)
2020/11/18 Javascript
[00:10]DOTA2 TI9勇士令状明日上线
2019/05/07 DOTA
[44:40]KG vs LGD 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
Linux上安装Python的PIL和Pillow库处理图片的实例教程
2016/06/23 Python
Python实现判断给定列表是否有重复元素的方法
2018/04/11 Python
在python中对变量判断是否为None的三种方法总结
2019/01/23 Python
浅谈django2.0 ForeignKey参数的变化
2019/08/06 Python
基于python3的socket聊天编程
2020/02/17 Python
struct和class的区别
2015/11/20 面试题
自荐信的格式
2014/03/10 职场文书
应届大专毕业生自我鉴定
2014/04/08 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python
Python开发工具Pycharm的安装以及使用步骤总结
2021/06/24 Python
MySQL 计算连续登录天数
2022/05/11 MySQL