当前位置: 首页 > news >正文

[JS]认识feach

介绍

feach是浏览器内置的api, 用于发送网络请求

请求方式对比

  1. AJAX: 基于XMLHttpRequest接收请求, 使用繁琐
  2. Axios: 基于Promise的请求客户端, 在浏览器和node中均可使用, 使用简单
  3. fetch: 浏览器内置的api, 基于Promise, 功能简单

基础语法

<body><button>发请求</button><script>document.querySelector('button').addEventListener('click',async function(){// 1.构建查询参数const search = new URLSearchParams({pname: '广东省', cname:'深圳市'}).toString()// 2.发请网络请求 (默认get)const res = await fetch('http://hmajax.itheima.net/api/area?'+ search)// 3.判断请求状态if(res.status >= 200 && res.status < 300) {// 4.获取成功结果 (返回promise)const data = await res.json()console.log(data);} else {// 5.处理请求错误console.log(res.status);}})</script>
</body>

提交表单

<body><!--选择图片 --><input type="file" ><!-- 回显图片 --><img src="" alt=""><script>document.querySelector('input').addEventListener('change', async function(){// 1.准备表单数据const file = this.files[0]const data = new FormData()data.append('img', file)// 2.发起网络请求 (自动设置请求头)const res = await fetch('http://hmajax.itheima.net/api/uploadimg', {method: 'POST',body: data})// 3.判断请求状态if(res.status >=200 && res.status <300) {const { data } = await res.json()console.log(data);// 4.回显图片document.querySelector('img').src = data.url} else {// 5.处理失败console.log('请求失败', res.status);}})</script>
</body>

提交JSON

<body><button>提交表单数据</button><script>document.querySelector('button').addEventListener('click',async function(){// 1.实例化Headerw对象const headers = new Headers()// 2.设置请求头headers.append('content-type','application/json')// 3.发起请求const res = await fetch('http://hmajax.itheima.net/api/register',{method:'POST',headers,body: JSON.stringify({username: 'itheima7777',password:'123456'})})// 4.处理请求结果if(res.status >=200 && res.status <300) {const data = await res.json()console.log(data)}})</script>
</body>

兼容性

如果需要兼容ie 10+, 可以使用 promise-polyfill 和 whatwg-fetch 两个库做兼容处理

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 设计模式的七大原则
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • 【Linux】进程间通信——命名管道和共享内存
  • 2024年公共文化与社会服务国际会议(ICPCSS 2024)
  • 事务的学习
  • C#小结:未能找到类型或命名空间名“xxx”(是否缺少 using 指令或程序集引用?)
  • 容器docker 架构命令案例
  • 文心快码——百度研发编码助手
  • 大模型/NLP/算法面试题总结3——BERT和T5的区别?
  • WindowsMac共享文件夹设置
  • MSPM0G3507(三十六)——超声波PID控制小车固定距离
  • 景联文科技以高质量多模态数据集赋能AI大模型,精准匹配提升模型性能
  • 通用型I2C接口的应用之综合应用(N32G45XVL-STB)
  • 强化学习编程实践-4-基于蒙特卡洛的方法
  • HQL案例大全之1. 查询没有学全所有课的学生的学号、姓名(特殊:应该先连接,在筛选)
  • Computed property XXX was assigned to but it has no setter
  • If…else
  • IndexedDB
  • interface和setter,getter
  • Iterator 和 for...of 循环
  • javascript从右向左截取指定位数字符的3种方法
  • node 版本过低
  • Object.assign方法不能实现深复制
  • React Native移动开发实战-3-实现页面间的数据传递
  • 创建一个Struts2项目maven 方式
  • 分布式熔断降级平台aegis
  • 缓存与缓冲
  • 基于Volley网络库实现加载多种网络图片(包括GIF动态图片、圆形图片、普通图片)...
  • 区块链共识机制优缺点对比都是什么
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 如何用vue打造一个移动端音乐播放器
  • 思考 CSS 架构
  • ​io --- 处理流的核心工具​
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (day18) leetcode 204.计数质数
  • (k8s)Kubernetes本地存储接入
  • (poj1.2.1)1970(筛选法模拟)
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (办公)springboot配置aop处理请求.
  • (初研) Sentence-embedding fine-tune notebook
  • (动手学习深度学习)第13章 计算机视觉---微调
  • (四)进入MySQL 【事务】
  • (最全解法)输入一个整数,输出该数二进制表示中1的个数。
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET Core使用NPOI导出复杂,美观的Excel详解
  • .NET 反射 Reflect
  • .NET应用UI框架DevExpress XAF v24.1 - 可用性进一步增强
  • @cacheable 是否缓存成功_让我们来学习学习SpringCache分布式缓存,为什么用?
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ 物联网 ]拟合模型解决传感器数据获取中数据与实际值的误差的补偿方法
  • [20170713] 无法访问SQL Server
  • [C#]猫叫人醒老鼠跑 C#的委托及事件
  • [C++]类和对象【上篇】
  • [ITIL学习笔记]之事件管理(2)
  • [Kubernetes]8. K8s使用Helm部署mysql集群(主从数据库集群)