聊一聊数据请求中Ajax、Fetch及Axios的区别

目录
  • Ajax介绍
  • Fetch介绍
  • Axios介绍
  • 对比
    • 几种方式的对比
  • 总结

Ajax介绍

Ajax是XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,早期的项目,我们只能通过它向服务器端请求数据,包括Jquery封装的Ajax请求库也是基于它的封装

我们来看一下基于XMLHttpRequest对象去做一个Ajax请求的事例

// 通过XMLHttpRequest初始化一个Ajax请求实例
const xhr = new XMLHttpRequest();

// 设置超时时间,0表示永不超时
xhr.timeout = 0;

// 初始化请求,这个方法不会发送请求给服务器端
// 第一个参数是请求的方法,例如GET、POST
// 第二个参数,服务端请求的url
// 第三个参数,请求是否是异步,默认为true异步
xhr.open('POST', '/api/url', true);

// 请求需要传送的数据
const formData = new FormData();

formData.append("username", "XXX");

formData.append("age", 18);

// 请求发起
xhr.send(formData);

// 监听请求结果
// 拿到服务器返回的数据
xhr.onreadystatechange = function () {
  // 当readyState为4并且xhr.status为200时
  // 拿到了正常返回的数据
  if (xhr.readyState == 4 && xhr.status == 200) {
    alert(xhr.responseText);
  } else {
    // 服务器返回了异常数据
    alert(xhr.statusText);
  }
};

从上面的事例可以看出来,我们要想请求数据,需要先new XMLHttpRequest实例出来,然后再通过兼听函数的方式来拿到服务器返回的数据

Fetch介绍

Fetch是window对象提供的一个方法,用于实现基于promise的http请求,它的出现是用来取代最早的XMLHttpRequest实现的ajax请求

同样的我们先来看一下Fetch请求的实例

// 请求的数据
const data = {
  username: "xxx",
  age: 18,
};

// 第一个参数是请求的url
// 第二个参数是一个对象
// 可以设置请求方式,请求数据、请求超时
// 还有请求头等
fetch("/api/url", {
  // 请求方式
  method: "POST",
  // 请求数据通过body传递
  body: JSON.stringify(data),
}).then((response) => {
    // 正常服务返回的数据通过then拿到
    console.log(response);
}).catch((error) => {
    // 异常返回在catch里处理
    console.log(error);
});

从上面的事例可以看出来,我们要想请求数据,直接使用fetch这样的全局对象就行,然后再通过Promise的方式来拿到服务器返回的数据

Axios介绍

Axios并不是原生Js提供的方法,它是一个基于XMLHttpRequest封装的Ajax请求库,并且把服务器返回的数据通过Promise的方式返回

还是老规矩,我们通过一个事例来看看Axios是怎么请求数据的

// 首先通过npm安装axios
npm i -S axios

// 通过import的方式在项目中引入axios
import axios from 'axios'

// 我们可以看到参数是一个对象
// 里面可以设置请求方式、请求数据
// 还有请求头等
axios({
  method: "POST",
  url: "/api/url",
  data: {
    username: "xxx",
    age: 18,
  },
}).then((response) => {
    // 正常服务返回的数据通过then拿到
    console.log(response);
}).catch((error) => {
    // 异常返回在catch里处理
    console.log(error);
});

从上面的事例可以看出来,我们要想请求数据,使用方式基本上和Fetch保持一致,但是它的底层确是基于XMLHttpRequest实现的

对比

几种方式的对比

ajax:

优点:局部更新,原生支持

缺点:可能破坏浏览器后退功能,嵌套回调

jqueryAjax:

在原生ajax的基础上进行封装,支持jsonp

fetch:

优点:解决回调地狱

缺点:APIA偏低层,需要封装,默认不带cookie,需要手动添加;浏览器支持情况不是很友好,需要第三方polyfill

axios的特点:

支持浏览器和node.js

支持promise

能拦截请求和响应

能转换请求和相应数据

能取消请求

自动转换json数据

浏览器端支持防止CSRF(跨站请求伪造)

总结

我们在实际项目中一般使用axios,因为它是一个成熟的ajax请求库,帮我们封装了很多实用的方法来向服务器请求数据

好了开发中,常用的服务器数据请求就讲到这了

到此这篇关于数据请求中Ajax、Fetch及Axios区别的文章就介绍到这了,更多相关Ajax、Fetch及Axios区别内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 关于vue中的ajax请求和axios包问题

    在vue中,经常会用到数据请求,常用的有:vue-resourse.axios 今天我说的是axios的post请求 github源文件及文档地址:[https://github.com/axios/axios] + 首先,引入axios CDN: <script src="https://unpkg.com/axios/dist/axios.min.js"></script> npm: npm install axios 并在全局的js中引入:import a

  • ajax和fetch的区别点总结

    本教程操作环境:windows7系统.jquery1.10.2版本.Dell G3电脑. ajax和fetch的区别 (1).ajax是利用XMLHttpRequest对象来请求数据的,而fetch是window的一个方法 (2).ajax基于原生的XHR开发,XHR本身的架构不清晰,已经有了fetch的替代方案 (3).fetch比较与ajax有着更好更方便的写法 (4).fetch只对网络请求报错,对400,500都当做成功的请求,需要封装去处理 (5).fetch没有办法原生监测请求的进度

  • 基于axios封装fetch方法及调用实例

    基础axios用法请看axios官网 //依赖于axios对私有ajax进行修改 import Qs from 'qs' import axios from 'axios' import router from 'router/index' import {errorPrompt, loading, closeLoading} from 'util/util' export const status = { SUCCESS: '100', NET_ERR: '101', // 网络连接异常,请稍

  • axios和ajax的区别点总结

    本文操作环境:windows7系统.ECMAScript 6版.Dell G3电脑. axios和ajax的区别是什么? axios和ajax的区别及优缺点: ajax: 1.什么是ajax Ajax是对原生XHR的封装,为了达到我们跨越的目的,增添了对JSONP的支持. 异步的javascript和xml,ajax不是一门新技术,而是多种技术的组合,用于快速的创建动态页面,能够实现无刷新更新数据从而提高用户体验. 2.ajax的原理? 由客户端请求ajax引擎,再由ajax引擎请求服务器,服务

  • 聊一聊数据请求中Ajax、Fetch及Axios的区别

    目录 Ajax介绍 Fetch介绍 Axios介绍 对比 几种方式的对比 总结 Ajax介绍 Ajax是XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,早期的项目,我们只能通过它向服务器端请求数据,包括Jquery封装的Ajax请求库也是基于它的封装 我们来看一下基于XMLHttpRequest对象去做一个Ajax请求的事例 // 通过XMLHttpRequest初始化一个Ajax请求实例 const xhr = new XMLHttpRequest(); // 设置超时

  • 一文掌握ajax、fetch和axios的区别对比

    目录 AJAX.Fetch.axios AJAX 创建AJAX AJAX的缺点: axios原理 axios的特点 axios常用的方法 put和patch的区别 axios相关配置 axios拦截器执行顺序问题 为什么axios中需要拦截器 为什么请求拦截2会在请求拦截1之前执行呢? Fetch.ajax与axios的区别 Fetch和Ajax比有什么优点 总结 axios源码分析 axios的执行流程 AJAX.Fetch.axios AJAX AJAX可以在不更新全局的情况下更新局部页面.

  • jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法

    jquery中ajax请求后台数据成功后既不执行success也不执行error,此外系统报错:Uncaught SyntaxError: Unexpected identifier at Object.success,但后台能够返回数据,原代码如下: var source=[]; $.ajax({ type: "post", url: "connectdb/select.jsp", data: {database: "scmdb", selec

  • jQuery中ajax请求后台返回json数据并渲染HTML的方法

    html实例 <table border="0" class="restaurant_food" cellspacing="0" cellpadding="1"> <input type="text" name="dishes" value="" class="seek_product" placeholder="请输入

  • vue axios数据请求及vue中使用axios的方法

    axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征: -------------------------------------------------------------------------------- •从浏览器中创建 XMLHttpRequest •从 node.js 发出 http 请求 •支持 Promise API •拦截请求和响应 •转换请求和响应数据 •取消请求 •自动转换JSON数据 •客户端支

  • vue中数据请求axios的封装和使用

    目录 一.什么是axios 二.下载方式 三.拦截器 四.请求的封装 五.使用 一.什么是axios 简单的来说,​Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中,我们在项目中会经常用axios请求接口来获取数据. 二.下载方式 直接在当前使用的项目中打开终端: npm install axios --save 或者yarn  add  axios 三.拦截器 拦截器就是在数据请求的过程中,拦截请求或者拦截响应的技术 请求拦截器:就是在发送请求的时

  • AJAX原理以及axios、fetch区别实例详解

    目录 AJAX原理 Promise封装Ajax JQ Ajax.Axios.Fetch的核心区别 JQuery Ajax Axios Fetch 补充:为什么要用axios? 总结 AJAX原理 Ajax的原理简单来说是在用户和服务器之间加了—个中间层(AJAX引擎),通过XmlHttpRequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作DOM而更新页面.使用户操作与服务器响应异步化. Ajax的过程只涉及JavaScript.XMLHttpRequest和

  • vue axios数据请求get、post方法及实例详解

    我们常用的有get方法以及post方法,下面简单的介绍一下这两种请求方法 vue中使用axios方法我们先安装axios这个方法 npm install --save axios 安装之后采用按需引入的方法,哪个页面需要请求数据就在哪个页面里引入一下. import axios from 'axios' 引入之后我们就可以进行数据请求了,在methods中创建一个方法 methods:{ getInfo(){ let url = "url" axios.get(url).then((r

  • 第一次在Vue中完整使用AJAX请求和axios.js的实战记录

    目录 零.AJAX 0.0 npm install express 0.1 express.js 0.2 GET-HTML 0.3 POST-HTML 一.导入模块 1.1方法一.下载axios.js,并放入vue工程plugins目录下 1.2方法二使用包管理器安装axios 1.3方法三直接引入CDN 二.实际应用 2.1以为和风天气API实践: 2.2数据接口如下: 2.3实现: 2.4完整Vue: 三.BUG修复 3.1 Can‘t resolve ‘axios‘ in ‘C:\vue\

随机推荐