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

政府补贴企业做网站郑州网络推广报价

政府补贴企业做网站,郑州网络推广报价,创意设计活动加计扣除,做网站需要什么软件教程一、XMLHttpRequest 1、什么是 XMLHttpRequest? XMLHttpRequest(简称 XHR)是浏览器提供的一个异步通信接口,允许网页在不刷新页面的情况下,与服务器交换数据。 它是AJAX(Asynchronous JavaScript and XML&…

一、XMLHttpRequest

1、什么是 XMLHttpRequest?

XMLHttpRequest(简称 XHR)是浏览器提供的一个异步通信接口,允许网页在不刷新页面的情况下,与服务器交换数据。

它是AJAX(Asynchronous JavaScript and XML)技术的核心,广泛用于早期前端开发中发起 HTTP 请求。

关键词:异步、局部更新、动态刷新

XHR 的引入标志着网页从“静态展示”变为“动态交互”的关键转折。

2、基本使用方式 

const xhr = new XMLHttpRequest()xhr.open('GET', '/api/user', true)xhr.onreadystatechange = function () {if (xhr.readyState === 4 && xhr.status === 200) {console.log(xhr.responseText)}
}xhr.send()

3、重要属性说明

属性含义
readyState请求状态(0~4),4 表示完成
statusHTTP 状态码(如 200、404)
responseText返回的字符串数据
responseXML返回的 XML 数据(已不常用)
onreadystatechange状态变化时触发的回调函数

4、readyState 状态机说明

描述
0请求未初始化
1请求已建立,尚未发送
2请求已发送,收到响应头
3正在接收响应体
4请求完成,响应就绪

 完整 POST 示例(含 JSON)

const xhr = new XMLHttpRequest()
xhr.open('POST', '/api/login', true)
xhr.setRequestHeader('Content-Type', 'application/json')xhr.onreadystatechange = () => {if (xhr.readyState === 4) {if (xhr.status === 200) {const data = JSON.parse(xhr.responseText)console.log('登录成功', data)} else {console.error('登录失败', xhr.status)}}
}xhr.send(JSON.stringify({ username: 'alice', password: '123456' }))

5、XHR 的优势和局限

✅ 优点:

  • 所有浏览器都支持(包括 IE6)

  • 可处理复杂场景:进度监听、分块接收等

  • 自由控制请求方式与状态码处理

❌ 缺点:

问题说明
语法繁琐需手动管理状态、编码结构混乱
回调地狱没有 Promise,易出错
不支持 async/await写法不现代化,难维护
不直观状态码判断、数据解析都要手写逻辑

6、常用高级功能

功能示例说明
设置请求头xhr.setRequestHeader('key', 'value')如 Content-Type、Authorization 等
设置超时xhr.timeout = 5000超时后触发 ontimeout 回调
请求取消xhr.abort()可中断请求
监听错误xhr.onerror = () => {}网络错误或跨域失败时触发

二、fetch

1、什么是 fetch? 

fetch浏览器原生的 HTTP 请求接口,用于在前端发送网络请求,基于 Promise 实现,替代早期的 XMLHttpRequest(XHR)。

它支持现代的异步语法(如 async/await),使得请求处理更加清晰、易读。

2、基本语法

fetch(url, options).then(response => response.json()).then(data => console.log(data)).catch(error => console.error(error))
  • url:请求地址

  • options:请求配置对象(method、headers、body 等)

3 、常用配置选项详解

fetch('/api/data', {method: 'POST',headers: {'Content-Type': 'application/json','Authorization': 'Bearer token123'},body: JSON.stringify({ name: 'Alice' }),credentials: 'include', // 携带 cookiemode: 'cors' // 跨域请求
})
选项说明
method请求方式,如 GETPOSTPUT
headers请求头配置
body请求体,仅 POST/PUT 有效
credentials是否携带 Cookie(如 include
mode请求模式:corssame-originno-cors

 4、响应处理(Response 对象)

fetch('/api/user').then(response => {if (!response.ok) {throw new Error('请求失败: ' + response.status)}return response.json()}).then(data => console.log(data))
  • response.ok:状态码是否是 200-299

  • response.status:状态码

  • response.json():解析 JSON 响应体

  • 也可以使用 response.text()response.blob()response.formData()

5、fetch 常见注意事项

问题描述
❌ 不自动抛出 HTTP 错误fetch 只对网络错误抛出异常,4xx/5xx 状态不会报错,需要手动判断
❌ 默认不带 Cookie需要设置 credentials: 'include'
❌ 不支持请求超时必须配合 AbortController 手动实现
❌ 不支持拦截器axios 相比,功能较原始,需要自己封装

6、fetch 与 XMLHttpRequest 对比

特性fetchXMLHttpRequest
是否原生✅ 是✅ 是
Promise 支持✅ 原生支持❌ 需手动封装
请求写法简洁优雅语法繁琐
错误处理仅网络失败抛出异常onerroronload
请求取消✅ 支持(AbortController❌ 需 hack

7、使用场景总结

场景适用性
简单数据请求✅ 适合
精细控制请求头/体✅ 灵活
前端自己封装统一请求模块✅ 推荐
项目已有 axios 等库❌ 不建议重复使用 fetch

 三、axios

1、什么是 Axios?

Axios 是一个基于 Promise 的浏览器和 Node.js 的 HTTP 客户端。

它封装了 XMLHttpRequest(XHR)请求,在语法、功能、兼容性和错误处理方面都更友好,是前端项目中使用最广泛的请求库之一。

2、Axios 的核心优势

优势描述
简洁语法默认封装请求/响应处理
自动转换 JSON请求数据和返回数据自动处理为 JS 对象
拦截器支持请求和响应统一处理,如添加 token、错误处理
取消请求内置取消机制(CancelToken)
浏览器兼容性好支持 IE 和移动端浏览器
SSR 友好可在 Node.js 中使用(如在 Nuxt/Next 等服务端渲染框架中)

3、基本使用示例 

GET 请求:
import axios from 'axios'
axios.get('/api/user?id=123').then(res => console.log(res.data)).catch(err => console.error(err))
POST 请求:
axios.post('/api/login', {username: 'alice',password: '123456'
})
.then(res => console.log(res.data))
.catch(err => console.error(err))

4、常用配置项(axios 请求选项) 

axios({url: '/api/user',method: 'post',headers: {'Content-Type': 'application/json','Authorization': 'Bearer xxx'},data: {name: 'Alice'},params: {page: 1,size: 10},timeout: 5000, // 设置超时时间(单位毫秒)withCredentials: true // 是否携带 Cookie
})

5 、拦截器机制(非常重要)

 拦截器是 axios 的强大功能,允许在请求发送前、响应返回后统一做处理

请求拦截器:
axios.interceptors.request.use(config => {// 在请求发送前做统一处理,如添加 tokenconfig.headers.Authorization = 'Bearer ' + localStorage.getItem('token')return config
})响应拦截器:
axios.interceptors.response.use(res => res.data, // 默认直接返回 dataerr => {if (err.response && err.response.status === 401) {// 处理未授权错误console.warn('未登录或登录过期')}return Promise.reject(err)}
)

 6、取消请求(防抖、离开页面时中断请求)

const controller = new AbortController()axios.get('/api/user', { signal: controller.signal }).then(res => console.log(res)).catch(err => {if (axios.isCancel(err)) {console.log('请求取消')}})// 手动取消
controller.abort()

7、与 fetch 的对比

特性axiosfetch
是否原生❌ 第三方库✅ 浏览器原生
自动转换 JSON✅ 自动解析❌ 手动 .json()
错误处理✅ 4xx/5xx 会自动抛出❌ 只抛网络错误
拦截器✅ 有请求/响应拦截器❌ 需要手动封装
请求取消✅ CancelToken / signal✅ 使用 AbortController
默认超时✅ 可配置 timeout❌ 需自己实现超时逻辑

8、常见问题处理

问题原因/解决
请求失败 401token 过期,响应拦截器中处理
跨域请求无效设置 withCredentials: true 且服务端支持
下载文件失败设置 responseType: 'blob'
后端接口路径变化频繁使用 baseURL 统一管理

 Axios 是一个功能强大、封装完善、兼容性好的 HTTP 客户端,适合绝大多数前端项目使用,尤其适用于中大型应用的请求模块封装与统一管理。

四、AbortController 

1、什么是 AbortController

AbortController 是浏览器原生提供的控制器对象,用来取消正在进行的异步操作(如 fetch 请求)。

它配合 AbortSignal 使用,通过手动调用 .abort() 来中止任务,是现代前端实现“中断请求”的推荐方式。

构成关系

const controller = new AbortController()
const signal = controller.signal
controller.abort():发出取消信号
signal:传给支持取消的 API(如 fetch),用于监听取消状态

2、常见用途场景

场景描述
请求超时避免接口长时间无响应卡住页面
切换页面时中断请求避免页面卸载后还处理响应导致报错
防抖节流快速连续点击或输入时,只保留最后一个请求
组件卸载时取消请求React / Vue 组件卸载后避免内存泄漏

 AbortController 是控制异步任务取消的原生工具,适用于 fetch / axios 请求的取消和超时控制,是现代前端必备的稳定性与性能优化手段。

 剩还有些内容等博主想到就继续更新

http://www.dtcms.com/wzjs/213531.html

相关文章:

  • 供应商管理的五步流程搜狗搜索引擎优化
  • wordpress 怎么手动更新广州网站优化页面
  • 青岛建设局网站首页奶茶店营销软文
  • 怎样查询网站空间深圳关键词优化
  • 邵阳网站建设推广电商平台哪个最好最可靠
  • 做爰视频网站在线看网站推广线上推广
  • 小说网站wordpress百度手机seo
  • 怎么做和京东一样网站网络推广外包搜索手机蛙软件
  • 做外贸要建什么网站百度有效点击软件
  • 速度超快的wordpress模板锦州seo推广
  • 目前很火的网页游戏信息流优化师职业规划
  • 网站代码加密百度推广的效果
  • 封面设计模板开鲁网站seo不用下载
  • 广西网红排名沧州seo公司
  • 石材做网站非国产手机浏览器
  • 企划做网站网站seo检测
  • 有必要 在线 网页 代理seo搜索引擎优化技术
  • 沈阳哪家医院人流做得最好衡水网站优化推广
  • 自己做钓鱼网站线下引流推广方法
  • 本地网站做哪方面吸引人百度后台登陆入口
  • 什么网站可以做免费广告如何刷app推广次数
  • vps做网站怎么加速宁德市市长
  • 如何做中介网站自己怎么开电商平台
  • 在线客服咨询系统东莞市网站seo内容优化
  • 一个新的网站怎么做宣传英文seo是什么意思
  • 手机网站怎么开发产品线上推广渠道
  • seo怎么给网站做外链seo外包公司兴田德润
  • 1688网站怎么做上海网络推广公司
  • ie建设企业网站进去无法显示长沙网络科技有限公司
  • 北京市网站建设公司搜索引擎免费下载