标签:err ons 浪潮 先后 输入 log 进度 catch sts
一.jQuery ajax
$.ajax({ type: ‘POST‘, url: url, data: data, dataType: dataType, success: function () {}, error: function () {} });
JQuery ajax 是对原生XHR的封装,除此以外还增添了对JSONP的支持。经过多年的更新维护,真的已经是非常的方便了,优点无需多言;如果是硬要举出几个缺点,那可能只有:
1.本身是针对MVC的编程,不符合现在前端MVVM的浪潮
2.基于原生的XHR开发,XHR本身的架构不清晰。
3.JQuery整个项目太大,单纯使用ajax却要引入整个JQuery非常的不合理(采取个性化打包的方案又不能享受CDN服务)
4.不符合关注分离(Separation of Concerns)的原则
5.配置和调用方式非常混乱,而且基于事件的异步模型不友好。
axios({ method: "post", url: "/user/12345", data: { firstName: "liu", lastName: "weiqin" } }) .then(res => console.log(res)) .catch(err => console.log(err))
vue2.0之后,尤雨溪推荐使用axios来请求数据。
Axios
是一个基于promise
的HTTP
库,可以用在浏览器和 node.js
中。它本质也是对原生XMLHttpRequest
的封装,只不过它是Promise的实现版本,符合最新的ES规范。
优点:
XMLHttpRequests
node.js
创建 http
请求Promise
APIJSON
数据XSRF
缺点:
三.fetch
mode: "no-cors"
就可以跨域了.fetch("/users.json", { method: "post", mode: "no-cors", data: {} }).then(function() { /* handle response */ });
1)fetch只对网络请求报错,对400,500都当做成功的请求,需要封装去处理 2)fetch默认不会带cookie,需要添加配置项 3)fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费 4)fetch没有办法原生监测请求的进度,而XHR可以
fetch是一个低层次的API,你可以把它考虑成原生的XHR,所以使用起来并不是那么舒服,需要进行封装
请注意,fetch规范与jQuery.ajax()主要有两种方式的不同,牢记: -. 当接收到一个代表错误的 HTTP 状态码时,从 fetch()返回的 Promise 不会被标记为 reject, 即使该 HTTP 响应的状态码是 404 或 500。相反,它会将 Promise 状态标记为 resolve (但是会将 resolve的返回值的 ok 属性设置为 false ),仅当网络故障时或请求被阻止时,才会标记为 reject。 -. 默认情况下,fetch 不会从服务端发送或接收任何 cookies, 如果站点依赖于用户 session,则会导致未经认证的请求(要发送 cookies,必须设置 credentials 选项)。
前端随心记---------Axios/fetch/ajax的区别
标签:err ons 浪潮 先后 输入 log 进度 catch sts
原文地址:https://www.cnblogs.com/hudunyu/p/11846282.html