Fetch
578 字
3 分钟
Fetch
fetch 是一种 HTTP 数据请求的方式,是 XMLHttpRequest 的一种替代方案。fetch 不是 ajax 的进一步封装,而是原生 js。Fetch 函数就是原生 js,没有使用 XMLHttpRequest 对象
Fetch 的参数
url,该参数定义要获取的资源,可以是一个 url 字符串,也可以是一个 Request 对象options,该参数可选,为一个对象,内部含有一些对请求的设置属性method<请求使用的方法>请求使用的方法>。如、POST 等 headers<请求头信息>请求头信息>。形式为 Headers 对象或 ByteStringbody<请求的>请求的> body 信息,可能是一个 Blob、BufferSource、FormData、URLSearchParams 或者 USVString 对象。注意 GET 或 HEAD 方法的请求不能包含 body 信息mode<请求的模式>请求的模式>。如 cors、no-cors 或者 same-origincredentiala<请求的>请求的> credentials。如 omit、same-origin 或者 includecache<请求的>请求的> cache 模式,no-store,reload,no-cache 或者 only-if-cached
response 对象
response 为一个 Promise 对象成功时传回的对象,该属性含有对应返回数据的属性和方法
属性
status(number),HTTP 请求结果参数,在 100-599 范围statusText(string),服务器返回的状态报告ok(boolean),如果返回 200 表示请求成功则为 trueheaders(Headers),返回头部信息,该属性后面也有对应的方法has(name)(boolean),判断是否存在该信息头get(name)(string),获取信息头的数据getAll(name)(Array),获取所有头部数据set(name,value),设置请求头信息append(name,value),添加 header 的内容delete(name),删除 header 的信息forEach(function(value,name){...},[thisContext]),循环读取 header 的信息url(string),详细的地址
方法
text(),以 string 的形式生成请求 textjson(),生成 JSON.parse(responseText)的结果blob(),生成一个 BlobarrayBuffer(),生成一个 ArrayBufferformData(),生成格式化数据,可用于其它的请求
其他方法
clone(),创建一个 Response 对象的克隆Response.error(),返回一个绑定了网络错误的新的 Response 对象Response.redirect(),用另一个 URL 创建一个新的 Resonse 对象
用法
get
fetch("a.html") .then(function (response) { return response.text() }) .then(function (response) { document.body.innerHTML = response })post
fetch("a.html", { method: "POST", headers: { "Accept": "application/json", "Content-Type": "application/json"; }, body: JSON.stringify({ user: "zhangsan", pwd: 123456; }) })与原生 Ajax 的比较
原生 Ajax
var Ajax = new XMLHttpRequest() Ajax.open("GET", url) Ajax.responseType = "json" Ajax.send() Ajax.onreadystatechange = function () { console.log(Ajax.response) } Ajax.onerror = function () { console.log("error") }fetch
fetch(url).then(function (response) { return response.json() //相当于JSON.parse(response); }).then(function (data) { console.log(data) }).catch(function (err) { console.log("error", err) });
//使用箭头函数 fetch(url).then( response => response.json() ).then( data => console.log(data) ).catch( err => console.log("error", err) );
//使用async函数 let Fetch = async function () { try { let response = await fetch(url) let data = await response.json() console.log(data) } catch (err) { console.log("error", err) } }文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
Ajax跨域
Ajax同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。 所…
2
Axios
Ajax1. REST API: restful (Representational State Transfer (资源)表现层状态转化) 1. 发送请求进行CRUD 哪个操作由请求方式来决定 2. 同一个请求路径可以进行多个操作 3. 请求方式会用到GET/POST/PUT/DELETE 2. 非RES…
3
原生Ajax
AjaxAjax 全称 Asynchronous JavaScript and XML(异步的 JavaScript 和 XML),既是一个对象,也是一种方法模式 AJAX 是一种用于创建快速动态网页的技术,通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网…
4
react-hooks
reactReact 的核心是组件。v16.8 版本之前,组件的标准写法是类(class)。 任何一个组件,可以用类来写,也可以用钩子来写。下面是类的写法。 再来看钩子的写法,也就是函数。 官方推荐使用钩子(函数),而不是类。因为钩子更简洁,代码量少,用起来比较"轻",而类比较"重"。而且,钩子是函数,更符合…
5
关于 cesium 在 micro-app 下无法显示的问题
cesium基座:vite + vue3 子应用:vite + vue3 micro app v1.0.0 rc.29, cesium v1.135 子应用包含一个 cesium map,在基座打开子应用时,cesium 无法显示地图,但是 sence, sky box, model 都能正常显示,唯独地图不显…
随机文章随机推荐














