ajax:
浏览器和服务器数据交互的网页技术
异步得xml和JavaScript
get post delete head put patch
get有参数:
将参数转换为查询字符串 Qs.stringify(obj);
post携带参数:
1.json数据格式 JSON.stringify(obj);
将传递的数据格式告与后端
"Content-Type","application/json";
2.表单格式数据
Qs.stringify(obj);
"Content-Type","application/x-www-form-urlencoded";
四个步骤:
1.创建实例对象
var xhr=new XMLHttpRequest();
2.打开一个连接
get携带参数
xhr.open(请求方式,url路径+Qs.stringify(obj));
2.1设置请求头
xhr.setRequestHeader('Authorization',token)
xhr.setRequestHeader('Content-Type','application/json')
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
3.发送请求
post携带
xhr.send(JSON.stringify(obj));
xhr.send(Qs.stringify(obj));
4.接收响应
xhr.onreadystatechange=function(){
请求完成并且请求成功
if(xhr.readyState===4&&xhr.status===200){
//处理一些业务
xhr.responseText json格式
}
}
jQuery封装ajax
静态方法
jQuery/$.ajax({
url:"",
method:"",
data:{},
headers:{},
success(res){},
error(err){}
...
});
ajax全局请求配置
$.ajaxSetup({
headers:{
"Authorization":token
}
});
//新增 修改 jquery动画 css动画
js单线程:
非阻塞IO(input/output)单线程语言;
console.log(1)
setTimeout(()=>{
console.log(2)
},0)
console.log(3) ;// 1 3 2
js会优先执行主线程任务 遇到异步请求
或者是遇到宏任务 不会立即执行
而是放到任务栈中
如果立即执行 主线程崩溃
如果异步一天不回来 主线程无法往下执行
要将异步 宏任务放到任务栈