共计 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
正文完
星哥玩云-微信公众号