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('参数');
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();
}
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();
}
}
}
同上
cookie,有时也用其复数形式cookies。类型为“小型文本文件”,是网站为了辨别用户身份进行跟踪且储存在用户本地终端上的数据(通常经过加密),由用户客户端计算机暂时或永久保存的信息,使用cookie的技术又被称为会话跟踪技术
点击页面,页面计数,当页面刷新后,计数仍然保留
var num = document.cookie || 0;
document.body.innerHTML = num;
document.onclick = function () {
num++
document.body.innerHTML = num;
document.cookie = num;
}
cookie的名称是cookie的唯一标识,我们可以理解成存储在计算机里文件的名字,同一文件夹下,不能存在同名的文件,所以,同一路径下,cookie的名称具有唯一性
cookie的内容就是所存储数据的内容,可以理解为文件的内容
cookie的域名指的是cookie所能使用的域名,即文件存储的文件夹,一个域名会创建一个文件夹
cookie文件所存放的子目录,不通目录之间的cookie不可相互访问
cookie的创建时间,即本地文件创建并生成的时间
cookie的过期时间,即本地文件被删除的时间
通过设置document下的cookie属性,可以创建cookie,name标识cookie的名称,content表示cookie的内容,path表示路径,当路径为根目录/时,当前域名下的所以目录文件都可以访问该cookie,expires为过期时间,具体代码如下
document.cookie = 'name=content;path=/;expires=' + new Date();
根据cookie时间过期之后自动删除的特点,我们可以将指定的cookie时间设置为过期时间,页面重载之后即可删除cookie
document.cookie = 'name=content;path=/;expires=' + new Date(0);
我们说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)
}
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}`;
}
function removeCookie(name) {
setCookie(name, '', -1);
}
function getCookies() {
var list = document.cookie.split('; ');
list = list.map(item => ({
name: item.split('=')[0],
content: item.split('=')[1]
}));
return list;
}
function getCookie(name) {
var list = getCookies();
var res = list.filter(item => item.name === name)[0];
return res ? res.content : '';
}
存储对象,可以将数据临时或者永久存在浏览器下
生命周期到手动删除之前,绑定域名,可跨窗口访问,不能跨浏览器
生命周期到会话结束之前,绑定域名,不可跨窗口访问,不能跨浏览器
页面保留用户登录状态
作业:用封装的ajax完成用户模块,新增手机号字段