Ajax离线处理需监听网络状态、拦截请求并兜底响应:通过navigator.onLine和online/offline事件感知切换,请求前校验并拒绝离线请求,失败时识别TypeError或ERR_NETWORK等离线特征,配合提示与重试,并支持本地暂存与二次确认。

Ajax 请求无法自动感知网络是否离线,需要主动检测并拦截请求、给出友好提示。核心思路是:监听网络状态变化 + 拦截请求发起时机 + 统一处理离线响应。
监听网络状态变化(online / offline)
浏览器原生提供 window.navigator.onLine 属性和 online / offline 事件,可实时感知网络切换:
-
初始化时检查:
if (!navigator.onLine)可立即判断当前是否离线 -
监听切换:绑定
window.addEventListener('offline', handler)和'online'事件,更新 UI 状态(如显示“已断开网络”横幅) -
注意局限:
navigator.onLine仅反映设备是否连上局域网或 Wi-Fi,不保证能访问服务器(比如路由器没联网、DNS 故障时仍返回true)
在 Ajax 发起前做离线拦截
建议统一封装请求函数(如用 fetch 或 axios),在发送前校验网络状态:
基于三引擎设计,从微信文章、新闻和博客网页提取干净内容,支持标题作者日期元数据,多格式和批量处理。
- 若
!navigator.onLine,直接拒绝请求,不发 HTTP 包,避免超时等待 - 同步返回一个被拒绝的 Promise:
Promise.reject(new Error('网络已离线')) - 配合全局提示(如 Toast):“当前无网络连接,请检查后重试”
对已发出请求做离线兜底处理
即使发起请求时在线,过程中也可能断网。需在请求失败时识别典型离线特征:
立即学习“Java免费学习笔记(深入)”;
-
fetch 错误类型:网络中断时通常抛出
TypeError: Failed to fetch(非 HTTP 状态码错误) -
axios 错误判断:检查
error.request?.status === 0或error.code === 'ERR_NETWORK' - 捕获这类错误后,统一提示“网络连接异常”,并可提供“重试”按钮(点击前再次校验
navigator.onLine)
增强体验的小技巧
让离线反馈更自然、可操作:
- 页面顶部固定一个轻量提示条,离线时显示、在线时自动隐藏(带淡入/淡出动画)
- 将用户离线期间的操作(如表单填写、点赞)暂存到
localStorage,上线后自动补发 - 对关键请求(如支付、提交订单)增加二次确认:“检测到网络不稳定,确定继续吗?”

















