【how2j Vue部分】两种在Vue的Ajax框架——fetch axios

news2024/11/25 14:19:48

fetch.js 和 axios.js 都是 Vue 中比较常见的两种ajax框架

1. fetch.js

一般说来 Vue 不会直接使用原生的 Ajax 而是使用 ajax 框架。 而 fetch.js 就是眼下比较流行的一种 ajax 框架

1. 准备 json数据:var url = "https://gitee.com/api/v5/users/liyangyf"

2. 通过fetch获得数据 :

fetch(url).then(function(response) {
    response.json().then(function (jsonObject) {
        var jsonString = JSON.stringify(jsonObject)
        document.getElementById("hero").innerHTML = "通过fetch获取到的json数据:"+ jsonString;
    })
}).catch(function(err){
    console.log("Fetch错误:"+err);
})

3. 显示结果

在这里插入图片描述

4. 代码解释

这段代码是使用 JavaScript 的 fetch API 来从指定的 URL (http://how2j.cn/study/json.txt) 获取 JSON 数据,并在获取成功后将其显示在网页上的某个元素中。如果发生错误,它会在控制台中打印出错误信息。

下面是对这段代码的详细解释:

  1. 定义 URL:
    这里定义了一个变量 url,它包含了你想要从中获取数据的 URL。
var url = "http://how2j.cn/study/json.txt"; 
  1. 使用 fetch 获取数据:

    fetch` 是一个用于发起网络请求的 API。它返回一个 Promise,这个 Promise 在请求成功时解析为一个 Response 对象,在请求失败时则会被拒绝。

fetch(url).then(function(response) {  
    ...  
}).catch(function(err){  
    console.log("Fetch错误:"+err);  
});

then 方法用于处理 Promise 的成功情况。当请求成功时,它会执行你提供的函数,并传入一个 Response 对象。
catch 方法用于处理 Promise 的失败情况。当请求失败时,它会执行你提供的函数,并传入一个错误对象。

  1. 处理 Response 对象:
    Response对象有一个json方法,它返回一个 Promise,该 Promise 解析为请求的 JSON 响应。在这里,我们再次使用then` 方法来处理这个 Promise,并传入一个函数来处理解析后的 JSON 对象。
response.json().then(function (jsonObject) {  
    ...  
});
  1. 显示 JSON 数据:

    首先,我们使用 JSON.stringify 方法将 JSON 对象转换为字符串,这样我们就可以在 HTML 中显示它。然后,我们使用 document.getElementById 方法找到 ID 为 “hero” 的 HTML 元素,并将其 innerHTML 属性设置为包含 JSON 字符串的字符串。

var jsonString = JSON.stringify(jsonObject);  
document.getElementById("hero").innerHTML = "通过fetch获取到的json数据:"+ jsonString;

总之,这段代码的主要目的是从指定的 URL 获取 JSON 数据,并将其显示在网页上的一个元素中。如果获取过程中发生错误,它会在控制台中打印出错误信息。

5. 使用 fetch 获取 JSON 数据

  • 定义你想要从中获取 JSON 数据的 URL。
  • 使用 fetch 函数发送 HTTP 请求到该 URL。
  • 使用 .then() 方法处理返回的 Promise,并获取 Response 对象。
  • 使用 Response 对象的 .json() 方法将响应体解析为 JSON 对象。
  • 在另一个 .then() 方法中处理解析后的 JSON 对象。
  • 使用 .catch() 方法捕获并处理任何可能出现的错误。

<script src="https://how2j.cn/study/axios.min.js"></script>
  
<div id="hero">
  
</div>
  
<script>
var url = "https://gitee.com/api/v5/users/liyangyf"
// 使用 fetch 获取 JSON 数据  

fetch(url)  
    .then(function(response) {  
        // 确保服务器响应的数据确实是 JSON 格式  
        if (!response.ok) {  
            throw new Error('Network response was not ok');  
        }  
        // 解析 JSON 数据  
        return response.json();  
    })  
    .then(function(jsonObject) {  
        // 在这里处理你的 JSON 数据  
        // 例如,将其显示在页面上  
        
        var jsonString = JSON.stringify(jsonObject); // 格式化 JSON 字符串以便阅读  
        document.getElementById("hero").innerHTML = "通过fetch获取到的json数据:<pre>" + jsonString + "</pre>";  
    })  
    .catch(function(error) {  
        // 在这里处理错误  
        console.error('There has been a problem with your fetch operation:', error);  
        // 可能的话,将错误信息显示给用户  
        document.getElementById("hero").innerHTML = "获取数据时出现错误:" + error.message;  
    });
  
</script>

2. axios.js

本来要开始讲解 Vue.js 里如何使用 Ajax了。 一般说来 Vue 不会直接使用原生的 Ajax 而是使用 ajax 框架。 而 axios.js 就是眼下比较流行的一种 ajax 框架

1. 准备 json数据:var url = "https://gitee.com/api/v5/users/liyangyf"

2. 通过axios获得数据 :

    axios.get(url).then(function(response) {
        var jsonObject = response.data;
        var jsonString = JSON.stringify(jsonObject)
        document.getElementById("hero").innerHTML = "通过 axios 获取到的json数据:"+ jsonString;
    })

3. 显示结果

在这里插入图片描述

4. 代码解释
这段代码是一个简单的JavaScript代码片段,它使用了axios库来从指定的URL(在这里是https://gitee.com/api/v5/users/liyangyf)发起一个GET请求,并处理返回的数据。下面是对这段代码的详细解释:

  1. 定义URL:
	var url = "https://gitee.com/api/v5/users/liyangyf";
  1. 发起GET请求:

    使用axios.get(url)发起一个GET请求到指定的URL。axios是一个流行的基于Promise的HTTP客户端,用于浏览器和node.js。

    .then(function(response) {…})是一个Promise的链式调用,用于处理请求成功后的响应。当请求成功时,该函数将被调用,并且响应对象(在这里是response)将作为参数传递给它。

axios.get(url).then(function(response) {  
    // 处理响应的代码  
});
  1. 处理响应数据:
    从response对象中提取data属性,它通常包含从服务器返回的数据(在这里是JSON格式的用户数据)。

    将这个数据存储在变量jsonObject中。虽然变量名是jsonObject,但实际上它已经是JavaScript对象了,而不是JSON字符串。

var jsonObject = response.data;

  1. 将对象转换为JSON字符串:

    使用JSON.stringify(jsonObject)将JavaScript对象jsonObject转换为其JSON字符串表示形式。这通常用于调试或显示目的,因为直接在HTML中显示JavaScript对象可能不会按预期工作。

var jsonString = JSON.stringify(jsonObject);
  1. 在HTML元素中显示数据:
    使用document.getElementById(“hero”)获取ID为hero的HTML元素(可能是一个<div><p>或其他元素)。然后,使用.innerHTML属性将元素的HTML内容设置为包含JSON字符串的字符串。
document.getElementById("hero").innerHTML = "通过 axios 获取到的json数据:" + jsonString;

5. 使用 axios 获取 JSON 数据

<script src="https://how2j.cn/study/axios.min.js"></script>
  
<div id="hero">
  
</div>
  
<script>
  
  // 定义你要请求的 URL  
  const url = 'https://gitee.com/api/v5/users/liyangyf';  
    
  // 发起 GET 请求  
  axios.get(url)  
    .then((response) => {  
      // 处理成功响应  
      console.log('响应状态:', response.status);  
      console.log('响应数据:', response.data); // response.data 就是返回的 JSON 数据  
    
      // 在这里,你可以对返回的数据进行进一步的处理,比如保存到数据库或发送到其他服务  
    })  
    .catch((error) => {  
      // 处理错误  
      if (error.response) {  
        // 请求已发出,但服务器响应的状态码不在 2xx 范围内  
        console.error('服务器错误:', error.response.data);  
        console.error('状态码:', error.response.status);  
      } else if (error.request) {  
        // 请求已发出,但没有收到响应  
        console.error('请求错误:', error.request);  
      } else {  
        // 发送请求时发生了某些事情,导致请求没有发出  
        console.error('错误:', error.message);  
      }  
      console.error('配置:', error.config);  
    });
</script>

在这里插入图片描述

3. 总结

简单概括来说,使用fetch或者axios可以分为三部分:

  1. 发送请求
  2. 显示数据
  3. 处理错误

4. 在Vue里使用

4.1 在Vue里使用fetch.js

<script src="https://how2j.cn/study/vue.min.js"></script>
<script src="https://how2j.cn/study/fetch.min.js"></script>
 
<head>

</head>
<div id="div1">
  {{ info }}
    </table>
 
</div>
 
<script>
var url = "https://gitee.com/api/v5/users/liyangyf";
new Vue({
	el:'#div1',
	data () {
      return {
        info: null
      }
    },
	mounted(){ //mounted 表示这个 Vue 对象加载成功了
	
    fetch(url).then((response) => {
                  // 取出响应中的json数据 *
                  return response.json();
                })
                .then((data) => {
                  // 设置响应数据
                  this.items = JSON.stringify(data,null,"\t\t\t");
                  // 控制台输出请求回来的json数据
                  console.log(data)
                  this.info = data
                })
                
                .catch(error => {    // 请求失败处理
                    console.log(error);
                })
                .then(() => {
                  this.loading = false;
                });
       
	}

})

</script>

在这里插入图片描述

4.2 在Vue里使用axios.js

<script src="https://how2j.cn/study/vue.min.js"></script>
<script src="https://how2j.cn/study/axios.min.js"></script>

<div id="app">
    {{ info }}
  </div>

  <script>
  new Vue({
    el: '#app',
    data () {
      return {
        info: null
      }
    },
    mounted () {
      axios
        .get('https://gitee.com/api/v5/users/liyangyf')
        .then(response => (this.info = response.data))
    }
  })
  </script>

在这里插入图片描述

参考资料:
使用 axios 访问 API

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1648950.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何判断代理IP质量?

由于各种原因&#xff08;从匿名性和安全性到绕过地理限制&#xff09;&#xff0c;代理 IP 的使用变得越来越普遍。然而&#xff0c;并非所有代理 IP 都是一样的&#xff0c;区分高质量和低质量的代理 IP 对于确保流畅、安全的浏览体验至关重要。以下是评估代理 IP 质量时需要…

2024抖音小店最新注册流程来了,快快收藏!

大家好&#xff0c;我是电商糖果 2024年想开一家抖音小店&#xff0c;但是不知道具体的开店流程。 不要着急&#xff0c;这篇文章就给大家详细的讲解一下。 首先&#xff0c;准备开店材料&#xff1a;5000左右的类目保证金&#xff0c;电脑&#xff0c;手机号&#xff0c;法…

【算法】滑动窗口——长度最小的子数组

本篇文章是用一个实例来介绍常用算法之一“滑动窗口”的相关概念&#xff0c;有需要借鉴即可。 目录 1.题目2.暴力求解2.1暴力求解思路&#xff1a;2.2时间复杂度是多少&#xff1f; 3.暴力求解的优化3.1固定left的情况下&#xff0c;优化right的次数。3.2sum求值优化3.3不同组…

Linux高级学习(前置 在vmware安装centos7.4)

【小白入门 通俗易懂】2021韩顺平 一周学会Linux 此文章包含第006p-第p007的内容 操作 在安装好的vmware下进行安装 这里使用的是vmware15&#xff08;win10下&#xff09;&#xff0c;win11可能无法使用15&#xff08;有几率蓝屏&#xff09;&#xff0c;换成16就行了 用迅雷…

OpenAI API搭建的智能家居助手;私密大型语言模型(LLM)聊天机器人;视频和音频文件的自动化识别和翻译工具

✨ 1: GPT Home 基于Raspberry Pi和OpenAI API搭建的智能家居助手 GPT Home是一个基于Raspberry Pi和OpenAI API搭建的智能家居助手&#xff0c;功能上类似于Google Nest Hub或Amazon Alexa。通过详细的设置指南和配件列表&#xff0c;用户可以自行组装和配置这个设备&#x…

GEE数据集——DeltaDTM 全球沿海数字地形模型数据集

DeltaDTM 全球沿海数字地形模型产品 简介 DeltaDTM 是全球沿岸数字地形模型&#xff08;DTM&#xff09;&#xff0c;水平空间分辨率为 1 弧秒&#xff08;∼30 米&#xff09;&#xff0c;垂直平均绝对误差&#xff08;MAE&#xff09;为 0.45 米。它利用 ICESat-2 和 GEDI …

电子合同:纸质合同的未来替代者?

随着科技的迅猛发展&#xff0c;电子合同作为一种新兴的合同形式&#xff0c;逐渐在各行各业中崭露头角。那么&#xff0c;电子合同是否会替代纸质合同&#xff0c;成为未来合同形式的主流呢&#xff1f;本文将就此话题展开探讨。 首先&#xff0c;我们来看电子合同的优势。电…

进制乘法表(任意进制均可以)

#include <iostream> // 包含输入输出流库 #include <vector> // 包含向量库&#xff0c;未使用&#xff0c;可以删除 #include <string> // 包含字符串库using namespace std; // 使用标准命名空间// 将十进制数转换为P进制形式的字符串 string toBase(…

【数据结构与算法】力扣 102. 二叉树的层序遍历

题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 示例 1&#xff1a; 输入&#xff1a; root [3,9,20,null,null,15,7] 输出&#xff1a; [[3],[9,20],[15,7]]示例 2&#x…

第8篇:创建Nios II工程之读取Switch的值<一>

Q&#xff1a;本期我们再添加一个PIO组件设为输入&#xff0c;创建Nios II工程读取输入值显示在LED上。 A&#xff1a;在前2期创建的控制LED工程的Platform Designer系统基础上再添加一个PIO核&#xff0c;参数设置为18位和单向输入模式&#xff0c;表示DE2-115开发板上的18个…

大历史下的 tcp:一个松弛的传输协议

如果 tcp 是一个相对松弛的协议&#xff0c;会发生什么。 所谓松弛感&#xff0c;意思是它允许 “漏洞”&#xff0c;允许可靠传输的不封闭&#xff0c;大致就是&#xff1a;“不求 100% 可靠&#xff0c;只要 90%(或多或少) 可靠&#xff0c;另外 10% 的错误可检测到” or “…

分享三维地理模型制作实践

前言 地理信息系统&#xff08;GIS&#xff09;是一种用于捕获、存储、检查和显示与地球表面位置相关的数据的计算机系统。GIS可以在一张地图上显示许多不同类型的数据&#xff0c;如街道、建筑物和植被。这使人们能够更容易地看到、分析和理解模式和关系。 实践 从地理空间…

SinoDB数据库的RAW TABLE

RAW表是不记录日志的永久表&#xff0c;类似于无日志模式数据库中的表。对于RAW表&#xff0c;支持对其进行更新、插入和删除操作&#xff0c;但日志是不会记录这些操作。可以在RAW表上定义索引&#xff0c;但不能在RAW表上定义唯一约束、主键约束或引用约束&#xff08;refere…

艺术的新领域——探索元宇宙艺术展带来的沉浸式艺术体验

在数字化的浪潮中&#xff0c;元宇宙艺术展成为了一种全新的展览形式&#xff0c;它通过虚拟现实、3D建模技术和互动平台&#xff0c;将传统艺术与现代科技巧妙结合&#xff0c;提供了一种前所未有的艺术欣赏方式。此类展览不仅展示了艺术作品的新颖呈现&#xff0c;还为参观者…

在数字化转型的浪潮中,CBDB百数服务商如何破浪前行?

在信息化时代&#xff0c;传统咨询企业面临着数字化转型的挑战与机遇。如何利用数字化技术提升业务效率、增强客户黏性&#xff0c;成为了行业关注的焦点。云南析比迪彼企业管理有限公司&#xff08;CBDB&#xff09;作为云南地区的企业咨询服务提供商&#xff0c;率先与百数展…

卷价格不如卷工艺降本增效狠抓模块规范化设计

俗话说&#xff0c;“卷价格不如卷工艺”&#xff0c;这意味着在追求成本控制和效率提升的过程中&#xff0c;蓝鹏的领导认为蓝鹏应该更注重工艺的优化和创新&#xff0c;而不仅仅是价格的竞争。而模块规范化设计正是实现这一目标的有效途径。 模块规范化设计可以提高生产效率…

java代码运行“找不到符号”报错解决?

查看maven配置&#xff0c;没有问题&#xff1a; 查看pom依赖配置&#xff0c;发现少了spring-boot依赖项&#xff1a; 原pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:…

【超好用的前端表单辅助功能】

前端表单辅助功能 1. 根据模块自动生成目录锚点定位2. 描点定位动态组件3. 隔离组件&#xff0c;组件内部实现校验逻辑&#xff0c;交给提交按钮统一处理4. 选择不同的类型需要重组不同的模块展示&#xff0c;并整合数据传给后端 最近做了一个复杂的表单&#xff0c;涉及到的技…

链表成环或多分枝问题

问题概述 这类问题主要和数论结合到一起。 这类问题主要的解决技巧就是画图&#xff0c;跟着图来写代码&#xff0c;不然代码5分钟&#xff0c;调试2小时。 因为每个节点可以指向下一个节点&#xff0c;那么两个节点就可以指向同一个节点&#xff1b;或者链表的末尾节点指向…

SIC知识(9)--长晶炉的技术难点

长晶炉是碳化硅晶体生长的核心设备&#xff0c;与传统晶硅级长晶炉有相同性&#xff0c;炉子结构不是非常复杂&#xff0c;主要由炉体、加热系统、线圈传动机构、真空获得及测量系统、气路系统、降温系统、控制系统等组成&#xff0c;其中的热场和工艺条件决定了碳化硅晶体的质…