You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
referrer: 一个 USVString 可以是 no-referrer、client或一个 URL。默认是 client。
referrerPolicy: Specifies the value of the referer HTTP header. May be one of no-referrer、 no-referrer-when-downgrade、 origin、 origin-when-cross-origin、 unsafe-url 。
// 第一种varurl='https://example.com/profile';vardata={username: 'example'};fetch(url,{method: 'POST',// or 'PUT'body: JSON.stringify(data),// data can be `string` or {object}!headers: newHeaders({'Content-Type': 'application/json'})}).then(res=>res.json()).catch(error=>console.error('Error:',error)).then(response=>console.log('Success:',response))// 第二种fetch('https://www.baidu.com/search/error.html',{method: 'POST',body: newURLSearchParams([["foo",1],["bar",2]]).toString()// 这里是请求对象}).then((res)=>{returnres.text()}).then((res)=>{console.log(res)})
// 通过response.ok 来判断fetch('flowers.jpg').then(function(response){if(response.ok){returnresponse.blob();}thrownewError('Network response was not ok.');}).then(function(myBlob){varobjectURL=URL.createObjectURL(myBlob);myImage.src=objectURL;}).catch(function(error){console.log('There has been a problem with your fetch operation: ',error.message);});
初识fetch
现在获取后台数据的时候,既有jq封装的ajax,也有axios等等,也有原生的XMLHttpRequest,但是今天没有介绍这些,而是介绍另外一个api,fetch
fetch,说白了,就是XMLHttpRequest的一种替代方案。如果有人问你,除了XMLHttpRequest获取后台数据之外,还有没有其他的替代原生api?
这是你就可以回答,还可以使用一种解决方案--fetch。
请注意,fetch规范与jQuery.ajax()主要有两种方式的不同,牢记:
fetch用法
fetch可以在现代浏览器中使用,已经挂载到BOM上面,可以直接在谷歌控制台使用,如果要注意 跨域的情况, fetch返回的是一个promise
查看fetch的支持情况:fetch的支持情况
当然,如果不支持fetch也没有问题,可以使用第三方的ployfill来实现:fetch-ployfill
简单使用
fetch API
url:
定义要获取的资源。这可能是:
option: option 可选
一个配置项对象,包括所有对请求的设置。可选的参数有:
referrerPolicy: Specifies the value of the referer HTTP header. May be one of no-referrer、 no-referrer-when-downgrade、 origin、 origin-when-cross-origin、 unsafe-url 。
对于请求携带的参数:
自定义请求对象:
检测请求是否成功
Headers对象
使用 Headers 的接口,你可以通过 Headers() 构造函数来创建一个你自己的 headers 对象。一个 headers 对象是一个简单的多名值对
Body
不管是 请求还是 响应都能够包含body对象. body也可以是以下任意类型的实例.
Body 类定义了以下方法 (这些方法都被 Request 和 Response所实现)以获取body内容. 这些方法都会返回一个被解析后的 promise对象和数据.
response对象
属性
包含了一个布尔值来标示该Response成功(状态码200-299) 还是失败.
包含Response的状态码 (例如, 200 成功)
...
方法
读取 Response对象并且将它设置为已读(因为Responses对象被设置为了 stream 的方式,所以它们只能被读取一次) ,并返回一个被解析为USVString格式的promise对象
读取 Response对象并且将它设置为已读(因为Responses对象被设置为了 stream 的方式,所以它们只能被读取一次) ,并返回一个被解析为JSON格式的promise对象
...同 body,因为Response实现了 Body的方法
参考来自
The text was updated successfully, but these errors were encountered: