1、JQuery.ajax()
$.ajax({
type: ‘POST’,
url: url,
data: data,
dataType: dataType,
success: function () {},
error: function () {}
});
传统 Ajax 指的是 XMLHttpRequest(XHR), 最早出现的发送后端请求技术,隶属于原始js中,核心使用XMLHttpRequest对象,多个请求之间如果有先后关系的话,就会出现回调地狱。
JQuery ajax 是对原生XHR的封装,除此以外还增添了对JSONP的支持。优点无需多言,这里指出几个缺点:
1.JQuery项目很大,若是单纯使用ajax却要引入整个项目。定制化(链接)方案不支持CDN服务。
2.基于异步模型不友好,造成回调地狱。
2、axios
axios({
method: ‘post’,
url: ‘/user/12345’,
data: {
firstName: ‘Fred’,
lastName: ‘Flintstone’
}
})
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,本质上也是对原生XHR的封装,只不过它是Promise的实现版本,符合最新的ES规范。
在网上未找到缺点,大致优点如[欢迎转载听雨的人博客]下
1.从 node.js 创建 http 请求。
2支持 Promise API。
3.客户端支持防止CSRF(就是让你的每个请求都带一个从cookie中拿到的key, 根据浏览器同源策略,假冒的网站是拿不到你cookie中得key的,这样,后台就可以轻松辨别出这个请求是否是用户在假冒网站上的误导输入,从而采取正确的策略。)。
4.提供了一些并发请求的接口(重要,方便了很多的操作)。
3、fetch
try {
let response = await fetch(url);
let data = response.json();
console.log(data);
} catch(e) {
console.log(“Oops, error”, e);
}
fetch号称ajax替代品,使用了ES6中的Promise对象。
优点如下:
1.语法简洁
2.基于标准 Promise 实现,支持 async/await
缺点如下[cnblogs.com/GoCircle]:
1.fetch只对网络请求报错,对400,500都当做成功的请求,需要封装去处理。
2.fetch默认不会带cookie,需要添加配置项。
3.fetch不支持abort(正在支持中),不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费。
4.fetch没有办法原生监测请求的进度,而XHR可以。