ajax,jQuery ajax,axios,fetch

段弘和
2023-12-01
  • Ajax
    ajax是无需重新加载整个页面,刷新局部页面的技术,核心是XMLHttpRequest对象,多个请求之间如果有先后关系,就会出现回调地狱
ajax({
	type:'get',
	url:'...',
	data:{...},
	success:function(){...},
	error:function(){...}
	})
  • jQuery ajax
    jQuery是javascript库,基于原始js做封装;jQuery ajax是后端发送技术,也是原始ajax的封装
$('.id').on('click',function(){
	$.ajax({
		type:
		url:
		success:
		error:
	
	})
}
  • fetch
    fetch是ajax替代品,是原生js,基于promise,没有使用XMLHttpRequest对象

缺点
1.Fetch默认无cookie
2.错误不会被拒绝
http错误不会导致fetch返回的Promise状态标记为reject,catch()也不会执行;需要包含promise.resolved情况,此时再判断response.ok是否为true
3.不支持超时
只要浏览器允许,请求继续,解决办法就是将fetch包装在一个Promise中

const fetchTimeout = (url, init, timeout = 3000) => {
    return new Promise((resolve, reject) => {
        fetch(url, init).then(resolve).catch(reject);
        setTimeout(reject, timeout);
    })
};

4.没有progress

fetch('...url地址').then(function(data){
	...return data.text()
	...return data.json()
})
  • axios
    axios不是原生js,基于Promise的HTTP库,需要下载安装。可以在浏览器端和node.js使用。可以在请求和响应阶段进行拦截,

特点:
1.在浏览器中创建XMLHttpRequest对象
2.从node中创建http请求
3.支持Promise API
4.拦截请求和响应
5.自动转换json数据
6.浏览器端支持防御XSRF
7.转换请求和响应数据

npm install axios
<script src='' />
axios.get('...url地址',{
	params:{"name":"jack" ......}
})
	.then(function(ret){
	console.log(ret.data)
})

Axios的API

  • Axios处理并发
    axios.all(iterable) // 函数执行所有的请求
    axios.spread(callback) // 处理响应回来的回调函数
 类似资料: