fetch初学知识

2017-10-22  本文已影响0人  海娩

fetch

现阶段fetch还处于起步阶段,还不支持IE,不过错误提醒功能还是挺好的

image.png

开始使用fetch

最简单的请求, 方法为post

     var url='http://localhost:8888';    
            var options = {
            hostname: 'localhost',
            port: 8888,
            path: '/',
            method: 'POST',
            mode: 'no-cors',
            body: ‘msg=hello weimian’
          };
    var myRequest = new Request(url, options);
        fetch(myRequest);

该fetch返回一个promise(一个Response对象)

fetch(url, options)

fetch接受第二个可选参数,第一个参数为请求的地址,第二个参数为请求的配置,包含请求的头部信息,比如方法,在默认情况下为Get方法,所以这里不使用默认情况所以显式设置为method:'POST'

检查请求是否成功

一般情况下,我们都需要通过判断请求是否成功来进行下一步的处理。

    fetch(url).then(function(res) {
            if(res.ok) {
                res.text().then(function(data) {
                console.log(data);
                });
            } else {
                console.log('err');
            }

在这个例子中,fetch一个url,在返回的promise中,先判断res是否成功,即res.ok是否为true,接着进行获取text文件,输出数据。

Body

fetch一个资源后返回的response不是具体的数据,你会用到的最常见的response属性就只有几个:

在response中你不可以直接得到后台返回的数据,需要进行再解析。所以Body类就定义了一下方法来获取body内容,这些方法返回一个被解析后的promise对象和数据

接下来就以text()为例进行解释

最简单的例子

    fetch(url).then(function(res) {
            return res.text();
        }).then(function(data) {
            console.log(data);
        })

返回text()方法,进行then再解析,才可以得到数据。这个过程可以写成下列的形式
url =》 promise =》res.text() =》text.data

当然,前提是你要知道后台发送的数据是什么格式的,如果后台发送的数据你当前的方法无法解析,是会报错的。比如你用json()方法来解析,而后台response对象里的数据使用text形式进行发送,就会报错。

Unexpected token r in JSON at position 0
image.png

注意

一些配置在默认情况下可能会报错,比如当你使用get请求时,在你的fetch(url, options)的options对象要设置{mode: 'no-cors'},否则就会报错,可看如下图。

image.png
这其实关乎到跨域资源共享的问题,之后再解释说明自己的理解吧。

附上自己写的最辣鸡起步的报名表单吧哈哈哈,之后学到新的东西再慢慢添加
register

只是在学习怎么用的层面,所以了解较浅,不喜勿喷。

上一篇 下一篇

猜你喜欢

热点阅读