Fetch、Axios 和 jQuery(Ajax) 三种常用的网络请求技术

Fetch、Axios 和 jQuery(Ajax) 是三种常用的网络请求技术,它们各自有着不同的特点和优势。本文将对这三种技术进行详细的介绍和比较,以帮助开发者更好地选择和使用合适的网络请求技术。


一、Fetch

Fetch(浏览器自带) 是一种现代的网络请求 API,它是基于 Promise 设计的,可以用于替代传统的 XMLHttpRequest。Fetch 提供了一种更简洁、更强大的方式来处理网络请求和响应。

  1. 特点:
  • 基于 Promise 设计,支持异步操作;
  • 返回的 response 对象包含完整的响应信息,如状态码、响应头等;
  • 支持请求和响应的拦截;
  • 支持请求取消。
  1. 示例代码:
简单请求
fetch('http://loalhost:8080')
返回值
fetch('http://loalhost:8080').then(response => response.json()).then(data => console.log(data))
表单方式提交
fetch('http://loalhost:8080',{method:'POST',headers:{'content-type':'application/x-www-form-urlencoded'},body:'age=18&t=183'
}).then(response => response.json()).then(data => console.log(data))
querystring方式提交
fetch('http://loalhost:8080?age=18',{method:'POST'
}).then(response => response.json()).then(data => console.log(data))
json方式提交
fetch('http://loalhost:8080',{method:'POST',headers:{'content-type':'application/json'},body:JSON.stringify({age:18})
}).then(response => response.json()).then(data => console.log(data))
返回error
fetch('http://loalhost:8080').then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error));

二、Axios

Axios (前端后端都可用)是一个基于 Promise 的 HTTP 客户端,它可以在浏览器和 Node.js 环境中使用。Axios 提供了一种简单、易用的方式来处理网络请求和响应。

  1. 特点:
  • 支持浏览器和 Node.js 环境;
  • 自动转换 JSON 数据;
  • 支持拦截请求和响应;
  • 支持请求取消。
  1. bootcdn
    稳定、快速、免费的前端开源项目 CDN 加速服务
    在这里插入图片描述
    复制<script>标签
    在这里插入图片描述

浏览器测试

data:text/html,<script src="https://cdn.bootcdn.net/ajax/libs/axios/1.5.0/axios.min.js"></script>

在这里插入图片描述

  1. 示例代码:
简单请求
axios({url:'http://localhost:8080'
})
默认json请求
axios({url:'http://localhost:8080',method:'POST',data:{age:18}
})
querystring方式提交
axios({url:'http://localhost:8080?age=18',method:'POST'
})
.then(response =>console.log(response .data))
表单方式提交
axios({url:'http://localhost:8080',method:'POST',headers:{'content-type':'application/x-www-form-urlencoded'},data:'age=18'
})
.then(response =>console.log(response .data))
返回error
axios({url:'http://localhost:8080',method:'POST',headers:{'content-type':'application/x-www-form-urlencoded'},data:'age=18'
})
.then(response =>console.log(response .data)).catch(error => {console.error(error);})

三、jQuery(Ajax)

jQuery 是一个流行的 JavaScript 库,它提供了一种简化的 Ajax 方法来处理网络请求和响应。虽然 jQuery 已经不再是前端开发的主流选择,但它仍然在一些项目中被广泛使用。

  1. 特点:
  • 兼容性好,支持多种浏览器;
  • 语法简单,易于上手;
  • 支持多种请求类型(如 GET、POST 等);
  • 支持请求和响应的回调函数。
  1. bootcdn
    稳定、快速、免费的前端开源项目 CDN 加速服务
    在这里插入图片描述
    复制<script>标签
    在这里插入图片描述

浏览器测试

data:text/html,<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.7.1/jquery.min.js"></script>

在这里插入图片描述

  1. 示例代码:
    在这里插入图片描述
简单请求
$.ajax({url: 'http://loalhost:8080'
})
返回值
$.ajax({url: 'http://loalhost:8080',success: function(data) {console.log(data);}
})
请求方法
$.ajax({method:'POST',url: 'http://loalhost:8080',success: function(data) {console.log(data);}
})
表单方式提交
$.ajax({method:'POST',data:{age:18},url: 'http://loalhost:8080',success: function(data) {console.log(data);}
})
querystring方式提交
$.ajax({method:'POST',data:{age:18},url: 'http://loalhost:8080',success: function(data) {console.log(data);}
})
json方式提交
$.ajax({method:'POST',headers:{'Content-Type':'application/json'},data:JSON.stringify({age:18}),url: 'http://loalhost:8080',success: function(data) {console.log(data);}
})

四、其他

  • jquery
// 基本用法无参数get请求
$.ajax({url:"demo_test.txt",success:function(result){console.log(result);}
}
// 需指定方法则增加method字段
$.ajax({url:"demo_test.txt",method:"POST",success:function(result){console.log(result);}
}
// 有参数,则增加data字段,有请求头则增加headers字段,有错误处理增加error字段
// 默认是按照表单提交post方法,data中虽然是json但是提交时转成表单
$.ajax({url:"demo_test.txt",data:{a:10},success:function(result){console.log(result);},error:function(xhr,status,error){console.log(error);}
});
// data在post下是表单格式,在get下是querystring格式
// 通过以下方法指定为json格式[json格式本质就是body里是json字符串,头里是application/json]
$.ajax({url:"demo_test.txt",headers:{ contentType: "application/json"},method:"POST",data:JSON.stringify({a:10}),success:function(result){console.log(result);}
});
  • fetch
// fetch的post表单数据用法
fetch(url,{headers:{'content-type': "application/x-www-form-urlencoded"},method:"POST",body:"age=18&w=213",
})
.then(res=>res.json())
.then(data=>console.log(res))
.catch(e=>{})
// fetch的post json数据用法
fetch(url,{headers:{'content-type': "application/json"},method:"POST",body:JSON.stringify({a:100}),
})
.then(res=>res.json())
.then(data=>console.log(res))
.catch(e=>{})
  • axios
// axios默认是json类型的提交
axios({url:"http://localhost:8080?x=1",method:"POST",data:{age:18}
})
.then(res=>console.log(res.data))
// 如果想改成form则需要修改headers和data格式
axios({url:"http://localhost:8080?x=1",method:"POST",headers:{"Content-Type":"application/x-www-form-urlencoded"},data:"age=18&w=213"
})
.then(res=>console.log(res.data))
  • 简写

JQuery的get和post可以简写:

$.get(url,data,callback)  // querystring格式
$.post(url,data,callback) // x-www-form-urlencoded格式

axios的get/post/put/delete等等都可以简写

axios.post(url,data).then(callback)

五、总结

Fetch、Axios 和 jQuery(Ajax) 都是非常优秀的网络请求技术,它们各自有着不同的特点和优势。在选择使用哪种技术时,可以根据项目的需求和个人喜好来决定。例如,如果你需要一个轻量级、易于使用的库,可以选择 Axios;如果你需要更多的控制权和灵活性,可以选择 Fetch;如果你需要在旧版浏览器中保持兼容性,可以选择 jQuery(Ajax)。总之,了解这三种技术的优缺点,将有助于你更好地进行网络请求的处理。

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

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

相关文章

Design Data Sheet for user shoppingcart in mysql

当设计用户的购物车模型表时: 1:购物车是订单的一种状态 订单的状态&#xff1a; 【待购买】&#xff1a;也就是购物车—超市中放置到购物篮 【待支付】&#xff1a;已经从购物车中确认–去到收银台中结算&#xff0c;但未给钱 【已支付】&#xff1a;已经支付过的订单----已经…

Vue3组件的注册

组件是Vue.js中的一个重要概念&#xff0c;它是一种抽象&#xff0c;是一个可以复用的Vue.js实例。它拥有独一无二的组件名称&#xff0c;可以扩展HTML元素&#xff0c;以组件名称的方式作为自定义的HTML标签。 在大多数系统网页中&#xff0c;网页都包含header、body、footer…

unlogged 分析

目录 实现原理示例 实现原理 以 Agent 的方式运行&#xff0c;启动了一个 Http Server&#xff0c;默认监听 12100 端口&#xff0c;支持执行某个类的某个方法&#xff0c;在执行方法的时候支持 mock 方法内的接口调用 示例 POST http://127.0.0.1:12100/command Body {&q…

Debezium vs OGG vs Tapdata:如何实时同步 Oracle 数据到 Kafka 消息队列?

随着信息时代的蓬勃发展&#xff0c;企业对实时数据处理的需求逐渐成为推动业务创新和发展的重要驱动力。在这个快速变化的环境中&#xff0c;许多企业选择将 Oracle 数据库同步到 Kafka&#xff0c;以满足日益增长的实时数据处理需求。本文将深入探讨这一趋势的背后原因&#…

数学建模(熵权法 python代码 例子)

目录 介绍&#xff1a; 模板&#xff1a; 例子&#xff1a;择偶 极小型指标转化为极大型&#xff08;正向化&#xff09;&#xff1a; 中间型指标转为极大型&#xff08;正向化&#xff09;&#xff1a; 区间型指标转为极大型&#xff08;正向化&#xff09;&#xff1a…

力扣每日练习(3.18)补

200. 岛屿数量 岛屿是指上下左右都是被0包起来的。使用递归的方式&#xff0c;也就是深度优先搜索&#xff0c;需要确定终止条件&#xff0c;也就是badcase是什么情况出现的。 二叉树是递到叶子节点的时候&#xff0c;因为下面是空子树了&#xff1b;矩阵就是越界&#xff0c;…

基于BusyBox的imx6ull移植sqlite3到ARM板子上

1.官网下载源码 https://www.sqlite.org/download.html 下载源码解压到本地的linux环境下 2.解压并创建install文件夹 3.使用命令行配置 在解压的文件夹下打开终端&#xff0c;然后输入以下内容&#xff0c;其中arm-linux-gnueabihf是自己的交叉编译器【自己替换】 ./config…

PyTorch 深度学习(GPT 重译)(三)

六、使用神经网络拟合数据 本章内容包括 与线性模型相比&#xff0c;非线性激活函数是关键区别 使用 PyTorch 的nn模块 使用神经网络解决线性拟合问题 到目前为止&#xff0c;我们已经仔细研究了线性模型如何学习以及如何在 PyTorch 中实现这一点。我们专注于一个非常简单…

获取蓝牙Download_Linkey日志方法

::获取root权限 del bt_config.conf :retry adb root if %errorlevel% neq 0 ( echo adb root failed. Retrying... goto retry ) echo Congratulations To Adb Root For His Success.... :adb_pull adb pull /data/misc/bluedroid/bt_config.conf if %errorlevel% neq…

拷贝他人maven仓库jar包到自己本地仓库,加载maven依然提示无法下载对应依赖

所遇问题&#xff1a; 拷贝他人maven仓库jar包到自己本地maven仓库repository下的对应依赖位置&#xff0c;重新加载idea的maven依然提示无法下载对应依赖。 解决办法&#xff1a; 在maven->repository找到对应报错依赖路径&#xff0c;删除xxx.repositories 和 xxx.lastU…

websocket 中 request-line 中的URI编码问题

首先&#xff0c;request-line组成如下&#xff1a; Request-Line Method SP Request-URI SP HTTP-Version CRLF 在 rfc6455 规范的 5.1.2 Request-URI 中&#xff0c;有这样的描述&#xff1a; The Request-URI is transmitted in the format specified in section 3.2.1. …

【视频图像取证篇】模糊图像增强技术之去噪声类滤波场景应用小结

【视频图像取证篇】模糊图像增强技术之去噪声类滤波场景应用小结 模糊图像增强技术之去噪声类滤波场景应用小结—【蘇小沐】 文章目录 【视频图像取证篇】模糊图像增强技术之去噪声类滤波场景应用小结&#xff08;一&#xff09;去噪声类滤波器1、去块滤波器&#xff08;Deblo…

不同“chatGPT”比较

通过两个问题比较不同版本的 生成式 AI 国内免费: 【通义千问】https://tongyi.aliyun.com/qianwen 【文心一言】https://yiyan.baidu.com 【豆包】https://www.doubao.com/chat 【360 智脑】https://chat.360.com/chat 归属主体&#xff1a; 【阿里-通义千问-免费-国内可访…

32.768K晶振X1A000141000300适用于无人驾驶汽车电子设备

科技的发展带动电子元器件的发展电子元器件-“晶振”为现代的科技带来了巨大的贡献&#xff0c;用小小的身体发挥着大大的能量。 近两年无人驾驶汽车热度很高&#xff0c;不少汽车巨头都已入局。但这项技术的难度不小&#xff0c;相信在未来几年里&#xff0c;无人驾驶汽车这项…

webpack从零开始搭建vue项目

webpack一步一步搭建vue项目 前提&#xff1a;node、git(可选)已安装。node我使用的版本是 16.13.1。本文基本上都是基础配置&#xff0c;更多特殊配置请看其他博客。 本项目包含内容&#xff1a; webapck vue sass postcss babel eslint typescript 项目源码地址&#xff1…

软考高级:软件架构风格-独立构件风格概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

MySQL 索引的分类和优化

​ 优质博文&#xff1a;IT-BLOG-CN 索引是什么 &#xff1a; MySQL 官方对索引的定义&#xff1a;索引&#xff08;Index&#xff09;是帮助 MySQL 高效获取数据的数据结构。可以得到索引的本质&#xff1a;索引是数据结构。索引的目的在于提高查询效率。可以简单理解为&#…

力扣爆刷第101天之hot100五连刷91-95

力扣爆刷第101天之hot100五连刷91-95 文章目录 力扣爆刷第101天之hot100五连刷91-95一、62. 不同路径二、64. 最小路径和三、5. 最长回文子串四、1143. 最长公共子序列五、72. 编辑距离 一、62. 不同路径 题目链接&#xff1a;https://leetcode.cn/problems/unique-paths/desc…

实现防抖函数并支持第一次立刻执行(vue3 + ts环境演示)

1、先看一效果&#xff1a; 2、实现思路&#xff1a; 使用定时器setTimeout和闭包实现常规防抖功能&#xff1b;增加immediate字段控制第一次是否执行一次函数&#xff08;true or false&#xff09;&#xff1b;增加一个flag标识&#xff0c;在第一次执行时&#xff0c;将标…

【go从入门到精通】for循环控制

前言 Go 语言提供了 for 循环语句&#xff0c;用于重复执行一段程序逻辑&#xff0c;直到循环条件不再满足时终止。 循环可以用于迭代各种数据结构&#xff08;例如切片、数组、映射或字符串&#xff09;中的元素 本文将很基础的for循环语法&#xff0c;循环嵌套&#…