阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

网络请求方式Fetch简介

67次阅读
没有评论

共计 1308 个字符,预计需要花费 4 分钟才能阅读完成。

fetch 是一种 HTTP 数据请求的方式,是 XMLHttpRequest 的一种替代方案。fetch 不是 ajax 的进一步封装,而是原生 js。Fetch 函数就是原生 js,没有使用 XMLHttpRequest 对象。

ajax

使用步骤
1. 创建 XmlHttpRequest 对象
2. 调用 open 方法设置基本请求信息
3. 设置发送的数据,发送请求
4. 注册监听的回调函数
5. 拿到返回值,对页面进行更新

//1. 创建 Ajax 对象
    if(window.XMLHttpRequest){var oAjax=new XMLHttpRequest();
    }else{var oAjax=new ActiveXObject("Microsoft.XMLHTTP");
    }

    //2. 连接服务器(打开和服务器的连接)oAjax.open('GET', url, true);

    //3. 发送
    oAjax.send();

    //4. 接收
    oAjax.onreadystatechange=function (){if(oAjax.readyState==4){if(oAjax.status==200){//alert('成功了:'+oAjax.responseText);
              fnSucc(oAjax.responseText);
           }else{//alert('失败了');
              if(fnFaild){fnFaild();
              }
           }
        }
    };
fetch

特点
1、第一个参数是 URL:
2、第二个是可选参数,可以控制不同配置的 init 对象
3、使用了 JavaScript Promises 来处理结果 / 回调:

fetch(url).then(response => response.json())
  .then(data => console.log(data))
  .catch(e => console.log("Oops, error", e))

更酷的一点
你可以通过 Request 构造器函数创建一个新的请求对象,你还可以基于原有的对象创建一个新的对象。新的请求和旧的并没有什么不同,但你可以通过稍微调整配置对象,将其用于不同的场景。例如:

var req = new Request(URL, {method: 'GET', cache: 'reload'});
fetch(req).then(function(response) {return response.json();
}).then(function(json) {insertPhotos(json);
});

上面的代码中我们指明了请求使用的方法为 GET,并且指定不缓存响应的结果,你可以基于原有的 GET 请求创建一个 POST 请求,它们具有相同的请求源。代码如下:

// 基于 req 对象创建新的 postReq 对象
var postReq = new Request(req, {method: 'POST'});
fetch 和 ajax 的主要区别

1、fetch() 返回的 promise 将不会拒绝 http 的错误状态,即使响应是一个 HTTP 404 或者 500
2、在默认情况下 fetch 不会接受或者发送 cookies

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-25发表,共计1308字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中