快上网建站品牌

13518219792
  • 首页
  • 关于我们
    • 如何选择
    • 选择理由
  • 案例作品
    • 网站建设
    • 优化推广
    • 微信开发
    • 电商托管
  • 服务项目
    • 网站建设
    • 移动端/APP
    • 微信/小程序
    • 技术支持
    • 其它服务
  • 建站知识
    • 成都网站建设
    • 成都做网站
    • 成都网站设计
  • 网站售后
    • 成都网站运营
    • 成都网站维护
    • 成都网站推广
  • 客服中心
  • 全国分站

前后端数据交互—Ajax、Fetch和Axios优缺点及比较

一、ajax、fetch 和 axios 简介

1.1、ajax

ajax是最早出现发送后端请求的技术,属于原生 js 。ajax使用源码,请点击《原生 ajax 请求详解》查看。一般使用之前,我们都需要把它们封装使用,就以 jQuery 的 ajax 为例。

封装的 ajax 如下:

 
 
 
  1. const $ = {}; 
  2. $.ajax = (obj)=>{ 
  3.  var xhr; 
  4.  if (window.XMLHttpRequest) { 
  5.   xhr = new XMLHttpRequest(); 
  6.  } else if (window.ActiveXObject) { // IE 
  7.   try { 
  8.    xhr = new ActiveXObject('Msxml2.XMLHTTP'); 
  9.   } catch (e) { 
  10.    try { 
  11.     xhr = new ActiveXObject('Microsoft.XMLHTTP'); 
  12.    } catch (e) {} 
  13.   } 
  14.  } 
  15.  if (xhr) { 
  16.   xhr.onreadystatechange = () =>{ 
  17.    if (xhr.readyState === 4) { 
  18.     if (xhr.status === 200) { 
  19.      obj.success(xhr.responseText); //返回值传callback 
  20.     } else { 
  21.      //failcallback 
  22.      obj.error('There was a problem with the request.'); 
  23.     } 
  24.    } else { 
  25.     console.log('still not ready...'); 
  26.    } 
  27.   }; 
  28.   xhr.open(obj.method, obj.url, true); 
  29.   // 设置 Content-Type 为 application/x-www-form-urlencoded 
  30.   // 以表单的形式传递数据 
  31.   xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
  32.   xhr.send(util(obj.data));//处理body数据 
  33.  } 
  34.   
  35.  //处理数据 
  36.  const util = (obj)=>{ 
  37.  var str = '' 
  38.  for (key in obj){ 
  39.   str += key +'='+obj[key]+'&' 
  40.   } 
  41.   return str.substring(0,str.length-1) 
  42.  }     
  43. } 

 封装完成,开始使用的时候你会发现,body和header处理得有些乱,还有回调地狱的问题,所以我们出现了新的 fetch 请求技术。

1.2、fetch

fetch 首先解决了回调地狱的问题,他返回的结果是一个 Promise 对象,对 Promise 不熟的可点击《Promise详解》。

fetch 使用如下:

 
 
 
  1. fetch(url,options).then(response=>{ 
  2. // handle HTTP response 
  3. },error=>{ 
  4. // handle network error 
  5. }) 

fetch 发送网络请求时,可以传输任意数据格式,非常简便。但是 fetch 的超时、终止取消并不方便,只能通过取消 Promise 来完成,如果有多个 fetch 请求时,更难处理。除此之外,fetch 是比较新的技术,低版本浏览器和IE浏览器支持性不好。

1.3、axios

axios 功能非常强大,包括 取消请求,超时处理,进度处理等等。但它的本质还是 ajax,基于 Promise 进行封装,既解决回调地狱问题,又能很好地支持各个浏览器。

axios使用代码如下:

 
 
 
  1. axios.post('/user', { 
  2.  firstName: 'Fred', 
  3.  lastName: 'Flintstone' 
  4. }) 
  5. .then(function (response) { 
  6.  console.log(response); 
  7. }) 
  8. .catch(function (error) { 
  9.  console.log(error); 
  10. }); 

二、ajax、fetch、axios的优缺点

2.1、ajax 的优缺点:

  • 属 js 原生,基于XHR进行开发,XHR 结构不清晰。
  • 针对 mvc 编程,由于近来vue和React的兴起,不符合mvvm前端开发流程。
  • 单纯使用 ajax 封装,核心是使用 XMLHttpRequest 对象,使用较多并有先后顺序的话,容易产生回调地狱。

2.2、fetch 的优缺点:

  • 属于原生 js,脱离了xhr ,号称可以替代 ajax技术。
  • 基于 Promise 对象设计的,可以解决回调地狱问题。
  • 提供了丰富的 API,使用结构简单。
  • 默认不带cookie,使用时需要设置。
  • 没有办法检测请求的进度,无法取消或超时处理。
  • 返回结果是 Promise 对象,获取结果有多种方法,数据类型有对应的获取方法,封装时需要分别处理,易出错。
  • 浏览器支持性比较差。

2.3、axios的优缺点:

  • 在浏览器中创建XMLHttpRequest请求,在node.js中创建http请求。
  • 解决回调地狱问题。
  • 自动转化为json数据类型。
  • 支持Promise技术,提供并发请求接口。
  • 可以通过网络请求检测进度。
  • 提供超时处理。
  • 浏览器兼容性良好。
  • 有拦截器,可以对请求和响应统一处理。

当前标题:前后端数据交互—Ajax、Fetch和Axios优缺点及比较
网站网址:http://www.gydahua.com/article/dhsopeg.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

其他资讯

  • Linux文件夹和文件:管理与使用(linux文件夹和文件)
  • C++中Lambda表达式的快速指南
  • 按什么键打开审查元素
  • AI和ML推动联网设备的增长
  • 创新互联Python教程:Pythonsplitlines()

行业动态

企业网站建设的重要性!

现在虽然是移动互联网时代,但企业网站依然重要,包含PC站点,移动站。可以说企业网站关系企业的未来发展和前途,尤其对中小企业更是如此,一些中小企业老板,对自己的名片很在乎,因为这是个门面。...

服务项目

  • 网站建设

    查看详情
  • 移动端/APP

    查看详情
  • 微信/小程序

    查看详情
  • 技术支持

    查看详情
  • 其它服务

    查看详情
  • 更多服务项目

    用我们的专业和诚信赢得您的信赖,从PC到移动互联网均有您想要的服务!

    获取更多

联系吧 在百度地图上找到我们

电话:13518219792

如遇占线或暂未接听请拨:136xxx98888

业务咨询 技术咨询 售后服务
网站设计
网站设计制作报价
高端网站设计
达州网站设计
成都网站设计
网站制作
成都网站制作
网站制作公司
四川成都网站制作
手机网站制作
联系我们
电话:13518219792
邮箱:631063699@qq.com
地址:成都青羊区锦天国际1002号
网址:www.gydahua.com
网站建设
品牌网站建设
企业网站建设公司
定制网站建设
雅安网站建设

微信二维码

  • 友情链接
  • 柴油发电机租赁
  • 成都发电机公司
  • 巴彦网站营销推广
  • 成都汽油发电机租赁
  • 成都网站建设公司
  • 广告扇定制制作
  • 成都食品包装设计
  • 成都发电机组销售
  • 做手机网站
  • 宏鑫宇康

Copyright © 2002-2023 www.gydahua.com 快上网建站品牌 QQ:244261566 版权所有 备案号:蜀ICP备19037934号

  • 在线咨询
  • 13518219792
  • 微信二维码

  • 移动版官网