前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fetch:新一代Ajax API

Fetch:新一代Ajax API

作者头像
WEBJ2EE
发布2019-07-19 11:34:35
7250
发布2019-07-19 11:34:35
举报
文章被收录于专栏:WebJ2EE

一直以来,我们使用的Ajax技术,实际是由各浏览器的XMLHttpRequest(XHR)对象实现。但由于XHR接口难用而且落后(不能Promise),所以实际项目中一般采用jQuery这种第三方库封装的Ajax功能。

Fetch API,W3C的正式标准,是XMLHttpRequest的最新替代技术:

  • 基于 Promise 设计
  • 语义化API(Header、Request、Response)
  • 良好的数据转换接口(text()、json())
  • React技术栈中的一员..

下图是3种资源请求方式

很明显,FetchAPI更现代、更清晰

1. Fetch经典示例

语法:

fetch(url, initParams) fetch(new Requst(url, initParams)) 注:上面2种写法等价

initParams常用参数说明:

method:"GET", "POST",默认为GET;

url: 请求的url;

headers: 请求携带的Headers对象;

body: POST请求主体;

注:GET请求中携带body会报错!

credentials: "omit"、"same-origin"、"include",默认为"omit";

注:omit->从不发送Cookie;

same-orign->同源才发送Cookie;

include->总是发送Cookie;

response常用方法说明:

status: 响应状态码(例如:200,成功); statusText: 与状态码一致的状态信息; ok:表示响应成功(200~299)还是失败; headers: 响应中的Headers对象; bodyUsed: 标识response是否已经被读取过; 注:Fecth API为保持对未来“流”API的支持, 限制response只能被读取一次; json(): 返回被解析为JSON格式的Promise对象; text(): 返回被解析为String格式的Promise对象;

Headers常用方法说明:

append(name,value) delete(name) get(name) getAll() has(name) set(name,value) headers.keys() headers.values()

例:

2. 使用Fetch上传文件

喜大普奔!!

可以用Fetch上传文件!!

以前我们上传文件只能通过Form的submit,为了处理上传成功的回调,出现了很多稀奇古怪的hack写法,现在Fetch就允许我们自行控制上传流程!!!

例:

怎么样?很给力有木有!!

更详细的Fetch API说明,请参考MDN官网....

参考:

https://fetch.spec.whatwg.org/ https://developer.mozilla.org/zh-CN/docs/Web/API/Fetch_API

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-04-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebJ2EE 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档