j*ascript Fetch API怎么用_它与传统的Ajax有何不同?


Fetch API 是现代浏览器原生网络请求接口,基于 Promise 设计,支持 async/await,但默认不带 Cookie、不自动处理 4xx/5xx 状态码;需手动检查 res.ok、显式配置 credentials、用 AbortController 取消请求。

javascript fetch api怎么用_它与传统的ajax有何不同?

Fetch API 是现代浏览器提供的原生网络请求接口,用 Promise 封装 HTTP 请求,语法更简洁、逻辑更清晰;它不是 XMLHttpRequest(XHR)的简单包装,而是一套全新设计的底层协议抽象,天然支持 async/await,但默认不带 Cookie、不自动处理 4xx/5xx 状态码,这点和传统 Ajax 有关键区别。

基本用法:从 GET 到 POST 很直接

发起一个 GET 请求只需一行核心代码:

fetch('/api/users')<br>  .then(res => res.json())<br>  .then(data => console.log(data));

POST 请求需显式配置 method、headers 和 body:

fetch('/api/login', {<br>  method: 'POST',<br>  headers: { 'Content-Type': 'application/json' },<br>  body: JSON.stringify({ username: 'alice', password: '123' })<br})<br>  .then(res => res.json())<br>  .then(data => console.log(data));
  • 响应体(res.body)是 ReadableStream,必须调用 res.json()res.text()res.blob() 才能读取内容
  • fetch 返回的 Promise 只在网络错误(如断网、DNS 失败)时 reject,HTTP 状态码 404、500 不会触发 catch
  • 如需根据状态码判断失败,要手动检查 res.ok(即 status 在 200–299)

Cookie 和认证行为默认不同

传统 XHR 默认发送当前域 Cookie(withCredentials=false),而 fetch 默认完全忽略 Cookie

Chatbase Chatbase

从你的知识库中构建一个AI聊天机器人

Chatbase 117 查看详情 Chatbase

立即学习“J*a免费学习笔记(深入)”;

  • 要携带 Cookie,必须显式传入 { credentials: 'include' }
  • 若只在同域下需要 Cookie,用 'same-origin' 更安全
  • 跨域请求带 Cookie 时,服务端响应头必须包含 Access-Control-Allow-Credentials: true,且不能设 Access-Control-Allow-Origin: *

取消请求:Fetch 本身不支持,需靠 AbortController

XMLHttpRequest 可直接调用 xhr.abort(),而 fetch 没有内置 abort 方法:

  • 借助 AbortController 实现超时或手动取消:
const controller = new AbortController();<br>setTimeout(() => controller.abort(), 5000);<br><br>fetch('/api/data', { signal: controller.signal })<br>  .catch(err => {<br>    if (err.name === 'AbortError') console.log('请求被取消');<br>  });
  • React/Vue 等框架中,通常在组件卸载时调用 controller.abort() 防止内存泄漏
  • 注意:已 resolve 的 Promise 不会因 abort 而 reject,仅未完成的请求会被中断

错误处理逻辑更“诚实”,但也更需手动干预

fetch 的 Promise 不因 HTTP 错误状态码 reject,这是与 jQuery.ajax 或封装过的 Axios 最明显的体验差异:

  • 401、404、500 响应仍走 .then(),需主动判断 !res.ok
  • 常见写法是封装一层工具函数:
async function api(url, options = {}) {<br>  const res = await fetch(url, options);<br>  if (!res.ok) throw new Error(`HTTP ${res.status}`);<br>  return res.json();<br>}
  • 网络异常(如离线)才会进 catch,所以建议同时监听 res.ok 和网络级错误

以上就是j*ascript Fetch API怎么用_它与传统的Ajax有何不同?的详细内容,更多请关注其它相关文章!


# react  # javascript  # word  # java  # jquery  # js  # vue  # 这是  # 老挝网站建设开发  # 离线  # 关键词优化排名软件怎样  # 昆明营销推广团队  # 实时问答网站排名优化  # 鄞州区建设网站方式方法  # 东营市场营销推广招聘  # 负面seo解决办法  # 衡水美甲推广招聘网站有哪些  # 学校网站建设目标和计划  # 品牌seo营销案例  # 如何选择  # 有什么区别  # 如何使用  # 不带  # 只在  # 自定义  # 有何不同  # 它与  # 浏览  # cookie  # ajax  # json 


相关栏目: 【 Google疑问12 】 【 Facebook疑问10 】 【 优化推广96088 】 【 技术知识133117 】 【 IDC资讯59369 】 【 网络运营7196 】 【 IT资讯61894


相关推荐: b站怎么查看视频的码率_b站视频码率查看方法  RxJS中如何高效地在一个函数内处理和合并多个数据集合  汽水音乐官方网站登录入口_汽水音乐网页版进入链接  MacBook Pro词典使用指南  126手机126邮箱登录_126邮箱手机登录入口官网  51漫画网实时入口 51漫画网页版官方免费漫画入口  iphone16系列配置参数介绍  Python定时发送QQ消息  《百果园》充值余额方法  如何高效地基于键列值映射DataFrame中的多个列  阿里云共享相册入口在哪  使用 .htaccess 正确配置 WordPress 子目录重定向与路径保留  Python项目中的条件导入:解决跨模块依赖问题  跨语言测试实践:使用Python Selenium测试现有J*a Web项目  Go Goroutine调度与并发执行深度解析  在Spring Boot Thymeleaf中利用布尔属性实现容器的条件显示  《kimi智能助手》制作ppt教程  Win10显卡驱动安装失败怎么办 Win10使用DDU彻底卸载驱动【解决】  b站如何管理订阅_b站订阅标签分类管理  抖音号怎么解除企业认证改成个人?改成个人有影响吗?  word文档行距怎么调?word文档调行距的操作步骤  《单词速记宝》设置学习计划方法  OPPO手机参数配置如何开启护眼模式_OPPO手机参数配置护眼模式开启指南  Win10锁屏时间怎么设置 Win10调整自动锁屏时间方法  Yandex世界探索 最新官方免登录入口全知道  鲁班大师乓乓皮肤获取方法  天天漫画2025最新入口 天天漫画永久有效登录入口  win11如何诊断DirectX问题 Win11运行dxdiag工具排查显卡故障【排错】  yandex网页版直接登录 yandex官方入口平台访问方法  PSD转AI文件的简单方法  企查查官网和爱企查 企查查企业查询官网入口  如何在CSS中实现盒模型多列间距_grid-gap与padding结合  漫蛙manwa2网页版书签同步链接_漫蛙manwa多设备登录入口  魔法祈幻界兑换码礼包大全  谷歌学术论文搜索引擎 谷歌学术官网入口论坛永久链接  哔哩哔哩的|直播|间怎么送礼物_哔哩哔哩|直播|送礼操作指南  excel怎么计算平均值 excel平均函数*ERAGE使用教学  《金山词霸》语音翻译方法  解决 Vue 3 组件未定义错误:理解 createApp 与根组件的正确使用  全球各国上班时间表外贸邮件时间  《全民k歌》音乐怎么下载到本地2025  解决jQuery多计算器输入字段冲突的教程  快递物流路径揭秘  纯CSS实现自适应宽度与响应式布局的水平按钮组  Excel如何制作月度销售统计图_Excel动态图表制作与控件应用  NumPy 高性能技巧:基于多列条件查找最近邻行索引的向量化实现  win11怎么更改账户类型 Win11标准用户和管理员权限切换【教程】  PHP与SQL实践:高效实现数据复制与特定列值修改  FotoBalloon图片左右镜像教程  视频号视频怎么提取文案?提取的文案如何优化与使用? 

 2025-12-19

了解您产品搜索量及市场趋势,制定营销计划

同行竞争及网站分析保障您的广告效果

点击免费数据支持

提交您的需求,1小时内享受我们的专业解答。

运城市盐湖区信雨科技有限公司


运城市盐湖区信雨科技有限公司

运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。

 8156699

 13765294890

 8156699@qq.com

Notice

We and selected third parties use cookies or similar technologies for technical purposes and, with your consent, for other purposes as specified in the cookie policy.
You can consent to the use of such technologies by closing this notice, by interacting with any link or button outside of this notice or by continuing to browse otherwise.