fetch、axios与Ajax之间关系-创新互联

1、axios
底层封装是XMLHttpRequest对象,实现原理跟ajax一样, 通过封装Promise()对象来处理结果
例子如下: 封装Axios对象进行回调 get方法
var axios = {
getMethod:function(url){
var xhr = new XMLHttpRequest()
reture Promise((resolve,reject)=>{
xhr.open('GET',url,true)
xhr.onreadstatechange = function(){
if(xhr.readState == 4){
if(xhr.status == 200){
resolve(xhr.responseText)
}
}
}
xhr.send()
})
}
}
2、已经封装好的Axios例子
axios({
method:"get | post",
url:"发送的地址",
data:{}

成都创新互联主要从事成都做网站、成都网站建设、网页设计、企业做网站、公司建网站等业务。立足成都服务灞桥,10余年网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:18982081108
 })

.then(
item=>{}
)
.catch(info=>{})
二、fetch
fetch 是基于ES6语法中Proimse()对象编写,代码简洁少,可以认为是Axios替代一种方法,支持
async / await。
1 、fetch只对网络请求报错,对400,500都当做成功的请求,服务器返回 400,500 错误码时并不会 reject,只有网络错误这些导致请求不能完成时,fetch 才会被 reject。
2 、fetch默认不会带cookie,需要添加配置项: fetch(url, {credentials: 'include'})
3、fetch不支持abort,不支持超时控制,使用setTimeout及Promise.reject的实现的超时控制并不能阻止请求过程继续在后台运行,造成了流量的浪费
4)fetch没有办法原生监测请求的进度,而XHR可以
try{
let response= awiat fetch(
let data=response.json()
/doSomething/
) catch(){
conosloe.log(err)
}
}
三、ajax
var xhr= new XMLHttpRequest();
xhr.onreadystatechange =function(){
if(xhr.readyState == 4){
if(xhr.status == 200){
consloe.log(xhr.responseText)
}
}
}
xhr.open("post","目标响应",ture);
//让Ajax已提交表单的方式,发起Post的Ajax请求
xhr.setRequestHeader("Content-Type","application/x-www-form-urlncoded");
xhr.send("username"+username+"possword"+possword)
基于juqery的ajax
$.ajax({
url:"", //请求的url地址
dataType:"json", //返回格式为json
async:true,//请求是否异步,默认为异步,这也是ajax重要特性
data:{"id":"value"}, //参数值
type:"POST | GET", //请求方式
beforeSend:function(){
//请求前的处理
},
success:function(req){
//请求成功时处理
},
complete:function(){
//请求完成的处理
},
error:function(){
//请求出错处理
}
});

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


当前标题:fetch、axios与Ajax之间关系-创新互联
文章地址:http://hbruida.cn/article/dhhigi.html