js中的cookie基础封装和ajax的cookie完整封装以及实现7天免登陆效果

30 篇文章 0 订阅
25 篇文章 0 订阅

免登陆效果,主要是浏览器中cookie的作用,可以设置保存数据到本地,从而实现记住密码,免登陆
1.cookie的基础封装,面试经常考这个。

function setCookie(key,value,n){//cookie添加函数
	var oDate = new Date();
	oDate.setDate(oDate.getDate()+n);
	//value = encodeURIComponent(value);转化编码格式
	document.cookie = key + "=" + value +";expires="+oDate;
}
function getCookie(key){//查询cookie的值的函数
	var arr = document.cookie.split("; ");
	for(let i = 0;i < arr.length;i++){
		var arr1 = arr[i].split("=");
		if(arr1[0] === key){
			//return decodeURIComponent(arr1[1]);//解码
			return arr1[1];
		}
	}
	
}
function removeCookie(name){//删除cookie函数
	setCookie(name,1,-1);//中间值无所谓,只需保证最后一个为负值
}

2.七天免登陆

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<script src="cookie.js" type="text/javascript" charset="utf-8"></script>
		<script src="https://cdn.bootcss.com/blueimp-md5/2.11.0/js/md5.js" type="text/javascript" charset="utf-8"></script>
		用户名:<input type="text" /><br/>
		密    码:<input type="password" /><br/>
		<input type="checkbox" />7天免登陆<br/>
		<input type="button" value="登录" />
		
		<script type="text/javascript">
			var aInput = document.querySelectorAll("input");
			
			if(getCookie("username")!==undefined){
				aInput[0].value = getCookie("username");
				aInput[1].value = getCookie("password");
				aInput[2].checked = true;
			}
			
			aInput[3].onclick = function(){
				if(aInput[2].checked){
					var val1 = aInput[0].value;
					var val2 = aInput[1].value;
					setCookie("username",val1,7);
					setCookie("password",md5(val2),7);
				}else{
					removeCookie("username");
					removeCookie("password");
				}
				
			}
		</script>
	</body>
</html>

调用时候注意路径就好了,
下面是ajax的cookie完整封装
cookie01.js

/*
 params
 * type:请求方法get/post
 * url:资源路径
 * data:向服务器传的参数(数据)
 * {username:"admin",password:1111}=>"username=admin&password=1111"
 * fnSuc:服务器响应成功时,前端需要执行的回调函数
 * */
//四个属性以对象的形式传入
function ajax(obj){
	var xhr = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP");

//将数据的形式转化为form表单传输的数据形式
//{username:"admin",password:1111}=>"username=admin&password=1111"
	var str = '';
	for(var i in obj.data){
		str += i + "=" + obj.data[i] + "&";
	}
//去掉&
	str = str.replace(/&$/,"");
//get的形式
	if(obj.type.toLowerCase()=="get"){
		if(str==""){
			xhr.open(obj.type,obj.url,true);
		}else{
			xhr.open(obj.type,obj.url + "?" +str,true);
		}
		xhr.send();
	}
//post的形式
	if(obj.type.toLowerCase()=="post"){
		xhr.open(obj.type,obj.url,true);
		xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		xhr.send(str);
	}

	xhr.onreadystatechange = function(){
		if(xhr.readyState == 4){
			if(xhr.status == 200){
				var data = xhr.responseText;
				obj.fnSuc(data);
			}
		}
	}
}
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是封装get和post请求并设置cookie,以及在前端 JS 调用的示例代码: 在后端 Node.js ,我们可以按照之前的方式封装 get 和 post 请求,并且在实例设置要发送的 cookie。这里提供一个封装后端 API 的示例代码: ```javascript const axios = require('axios'); const instance = axios.create({ baseURL: 'https://example.com', timeout: 5000, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' } }); instance.defaults.headers.common['Cookie'] = `cookieName=cookieValue`; // 封装 GET 请求 function get(url, params) { return instance.get(url, { params }); } // 封装 POST 请求 function post(url, data) { return instance.post(url, data); } module.exports = { get, post }; ``` 在前端 JS ,我们可以使用 Ajax 或 fetch 等方式调用后端 Node.js API,获取数据或提交数据。这里提供一个使用 jQuery Ajax 调用后端 API 的示例代码: ```javascript $.ajax({ url: 'https://example.com/api/data', type: 'GET', dataType: 'json', xhrFields: { withCredentials: true }, success: function(data) { console.log(data); }, error: function(xhr, status, error) { console.error(error); } }); $.ajax({ url: 'https://example.com/api/data', type: 'POST', dataType: 'json', xhrFields: { withCredentials: true }, data: { name: 'John', age: 30 }, success: function(data) { console.log(data); }, error: function(xhr, status, error) { console.error(error); } }); ``` 在上面的代码,我们使用了 jQuery 的 `$.ajax()` 方法发送 GET 和 POST 请求,并且设置了 `xhrFields` 选项,让 Ajax 能够携带跨域请求Cookie。在请求成功时,我们通过 `success` 回调函数获取服务器返回的数据,在请求失败时,我们通过 `error` 回调函数获取错误信息。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值