在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 相关文章推荐
ArrayList类(增强版)
Apr 04 Javascript
理解Javascript_13_执行模型详解
Oct 20 Javascript
读jQuery之九 一些瑕疵说明
Jun 21 Javascript
js获取select标签的值且兼容IE与firefox
Dec 30 Javascript
jQuery设置和获取HTML、文本和值示例
Jul 08 Javascript
javascript 应用小技巧方法汇总
Jul 05 Javascript
jQuery弹层插件jquery.fancybox.js用法实例
Jan 22 Javascript
jQuery中JSONP的两种实现方式详解
Sep 26 Javascript
js实现图片旋转 js滚动鼠标中间对图片放大缩小
Jul 05 Javascript
import与export在node.js中的使用详解
Sep 28 Javascript
jquery 动态遍历select 赋值的实例
Sep 12 jQuery
vue实现页面内容禁止选中功能,仅输入框和文本域可选
Nov 09 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概述.
2006/10/09 PHP
windows xp下安装pear
2006/12/02 PHP
PHP使用递归方式列出当前目录下所有文件的方法
2015/06/02 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
jQuery 操作option的实现代码
2011/03/03 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
2013/03/15 Javascript
javascript对下拉列表框(select)的操作实例讲解
2013/11/29 Javascript
JavaScript几种数组去掉重复值的方法推荐
2016/04/12 Javascript
jQuery Mobile页面返回不需要重新get
2016/04/26 Javascript
jQuery对象的链式操作用法分析
2016/05/10 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
Bootstrap按钮功能之查询按钮和重置按钮
2016/10/26 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
jQuery实现form表单序列化转换为json对象功能示例
2018/05/23 jQuery
vue插件mescroll.js实现移动端上拉加载和下拉刷新
2019/03/07 Javascript
自定义Vue组件打包、发布到npm及使用教程
2019/05/22 Javascript
基于Node的Axure文件在线预览的实现代码
2019/08/28 Javascript
Angular处理未可知异常错误的方法详解
2021/01/17 Javascript
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
python实现黑客字幕雨效果
2018/06/21 Python
django的ORM模型的实现原理
2019/03/04 Python
简单了解python反射机制的一些知识
2019/07/13 Python
Python实现播放和录制声音的功能
2020/08/12 Python
python3 os进行嵌套操作的实例讲解
2020/11/19 Python
解决HTML5中滚动到底部的事件问题
2019/08/22 HTML / CSS
Python里面如何拷贝一个对象
2014/02/17 面试题
心得体会怎么写
2013/12/30 职场文书
党支部公开承诺践诺书
2014/03/28 职场文书
2014年小学教师工作自我评价
2014/09/22 职场文书
党的群众路线教育实践活动个人整改方案
2014/10/25 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
酒店销售经理岗位职责
2015/04/02 职场文书
天河观后感
2015/06/11 职场文书
导游词之山西祁县乔家大院
2019/10/14 职场文书
python实现腾讯滑块验证码识别
2021/04/27 Python