3.POST请求
var xhr = new XMLHttpRequest();
xhr.open('post', '路径', true);
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded'); // 设置请求头
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
console.log(xhr.responseText);
}
}
xhr.send('参数');
4.ajax的封装
ajax(url, cb)
function ajax(url, cb) { // 请求接口 拿到数据 使用数据
var xhr = new XMLHttpRequest();
xhr.open('get', url, true);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var data = xhr.responseText;
cb(data);
}
}
xhr.send();
}
ajax(path, data, successCB, dataType, type, beforeCB)
function ajax(path, data, successCB, dataType = 'json', type = 'get', beforeCB = null) {
var param = '';
for (var key in data) {
param += `${key}=${data[key]}&`
}
param = param.substring(0, param.length - 1);
var xhr = new XMLHttpRequest();
if (type.toLowerCase() == 'get') {
xhr.open(type, `${path}?${param}`, true);
xhr.send();
} else {
xhr.open(type, path, true);
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
xhr.send(param);
}
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var data = xhr.responseText;
if (dataType === 'json') {
try {
data = JSON.parse(data);
} catch (e) { }
}
successCB && successCB(data)
} else {
beforeCB && beforeCB();
}
}
}
ajax(options)
同上
5.cookie的概念
cookie,有时也用其复数形式cookies。类型为“小型文本文件”,是网站为了辨别用户身份进行跟踪且储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息,使用cookie的技术又被称为会话跟踪技术
6.cookie的初体验
点击页面,页面计数,当页面刷新后,计数仍然保留
var num = document.cookie || 0;
document.body.innerHTML = num;
document.onclick = function () {
num++
document.body.innerHTML = num;
document.cookie = num;
}
7.cookie的主要内容
名称
cookie的名称是cookie的唯一标识,我们可以理解成存储在计算机里文件的名字,同一文件夹下,不能存在同名的文件,所以,同一路径下,cookie的名称具有唯一性
内容
cookie的内容就是所存储数据的内容,可以理解为文件的内容
域名
cookie的域名指的是cookie所能使用的域名,即文件存储的文件夹,一个域名会创建一个文件夹
路径
cookie文件所存放的子目录,不通目录之间的cookie不可相互访问
创建时间
cookie的创建时间,即本地文件创建并生成的时间
过期时间
cookie的过期时间,即本地文件被删除的时间
8.cookie的使用
cookie的创建
通过设置document下的cookie属性,可以创建cookie,name标识cookie的名称,content表示cookie的内容,path表示路径,当路径为根目录/时,当前域名下的所以目录文件都可以访问该cookie,expires为过期时间,具体代码如下
document.cookie = 'name=content;path=/;expires=' + new Date();
cookie的删除
根据cookie时间过期之后自动删除的特点,我们可以将指定的cookie时间设置为过期时间,页面重载之后即可删除cookie
document.cookie = 'name=content;path=/;expires=' + new Date(0);
cookie的修改
我们说cookie的名字时唯一的,所以根据特性,我们重写同名cookie即可覆盖原cookie,达到修改cookie的过程
cookie的获取
cookie存在document对象上,为字符串类型,获取cookie其实就是对字符串进行操作
var arr = document.cookie.split('; '); // 第一步 拿到cookie字符串,通过; 分割得到数组
// 第二步 映射 得到JSON数据
arr = arr.map(function (item, index) {
var temp = item.split('=');
return {
name: temp[0],
content: temp[1]
}
// var [name, content] = item.split('='); // ES6
// return {
// name,
// content
// }
});
// ES6
// arr = arr.map(item => ({
// name: item.split('=')[0],
// content: item.split('=')[1]
// }));
// 第三步 过滤得到需求的cookie对象
var res = arr.filter(function (item) {
return item.name === '指定的cookie名称';
})[0];
// ES6
// var res = arr.filter(({ name }) => name === '指定的cookie名称')[0];
if (res) { // 第四步 判断是否存在,打印内容
console.log(res.content)
}
9.cookie的总结
cookie的特点
- 文件有大小限制:4KB
- 数量限制:一般浏览器,限制大概在50条左右
- 读取有域名限制:不可跨域读取,只能由来自写入cookie的同一域名的网页可进行读取。简单的讲就是,谁写的cookie,谁才有权利读取
- 时效限制:每个cookie都有时效,最短的有效期是会话级别。就是当浏览器关闭,cookie会立即销毁。如果没有指定cookie的时效,那么默认的时效就是会话级别
cookie的缺点
- cookie可能被禁用
- cookie与浏览器相关联,不能跨浏览器访问
- cookie可能被删除
- cookie安全性不高
cookie注意点
- cookie的名或者值中不能包含分号(😉、逗号(,)、等号(=)以及空格
- cookie名唯一值,同名会被覆盖
- 中文需要编码(encodeURIComponent)和解码(decodeURIComponent)
- cookie用来存放不太重要的信息
10.cookie的封装
setCookie设置cookie
function setCookie(name, content, iDay = 7) {
var date = new Date();
var day = date.getDate();
var hours = date.getHours();
date.setHours(hours - 8);
date.setDate(day + iDay);
document.cookie = `${name}=${content};path=/;expires=${date}`;
}
removeCookie删除coookie
function removeCookie(name) {
setCookie(name, '', -1);
}
getCookies获取cookie列表
function getCookies() {
var list = document.cookie.split('; ');
list = list.map(item => ({
name: item.split('=')[0],
content: item.split('=')[1]
}));
return list;
}
getCookie获取指定cookie
function getCookie(name) {
var list = getCookies();
var res = list.filter(item => item.name === name)[0];
return res ? res.content : '';
}
11.storage
存储对象,可以将数据临时或者永久存在浏览器下
localStorage
生命周期到手动删除之前,绑定域名,可跨窗口访问,不能跨浏览器
- localStorage.setItem(key, value):存储数据,key为键,value为值,只能存储字符串类型的数据
- localStorage.getItem(key):获取到指定key的value值
- localStorage.removeItem(key):删除指定key的存储数据
- localStorage.clear():清除所有存储的数据
sessionStorage
生命周期到会话结束之前,绑定域名,不可跨窗口访问,不能跨浏览器
- sessionStorage.setItem(key, value):存储数据,key为键,value为值,只能存储字符串类型的数据
- sessionStorage.getItem(key):获取到指定key的value值
- sessionStorage.removeItem(key):删除指定key的存储数据
- sessionStorage.clear():清除所有存储的数据
12.用户登录状态
页面保留用户登录状态
作业:用封装的ajax完成用户模块,新增手机号字段
208

被折叠的 条评论
为什么被折叠?



