response.text()将响应体作为utf-8字符串原样读取,不解析结构、不校验格式;适用于纯文本、手动解析html、content-type错误或调试场景,需await或.then调用,且仅可读一次。

用 response.text() 解析纯文本或 HTML 片段,核心就一点:它把响应体当作 UTF-8 编码的字符串读取,不解析结构,也不校验格式——不管后端返回的是普通文字、HTML 标签、XML 还是 JSON 字符串,它都原样转成字符串。
什么时候该用 response.text()?
适合以下场景:
- 接口明确返回纯文本(如日志、配置片段、错误提示)
- 需要手动解析 HTML 字符串(比如提取某个 class 的内容,或动态插入到 DOM)
- 后端没设 Content-Type,或设错了(比如返回 HTML 却标成
text/plain),导致response.json()报错 - 想先看原始响应再决定怎么处理(调试时常用)
基本写法与常见错误
正确写法必须等待 Promise 完成,不能直接打印或赋值:
- ✅ 正确:用
await response.text()或链式.then(text => {...}) - ❌ 错误:写
console.log(response.text())—— 这会输出一个 pending Promise,不是字符串 - ❌ 错误:调用一次
response.text()后又调第二次 —— 响应体只能读一次,第二次会报 “Body has already been used”
处理 HTML 片段的实用技巧
拿到 HTML 字符串后,通常要安全地转成 DOM 节点再操作:
- 用
DOMParser解析(推荐):const doc = new DOMParser().parseFromString(htmlStr, 'text/html'),然后用doc.querySelector提取元素 - 临时挂载到隐藏元素:
const temp = document.createElement('div'); temp.innerHTML = htmlStr;,再取temp.children或temp.querySelector - 注意 XSS 风险:如果 HTML 来自不可信来源,不要直接
innerHTML = htmlStr到页面;优先用textContent或白名单过滤
配合状态检查一起用
response.text() 不会自动判断请求是否成功,得自己检查状态:
- 先判断
response.ok(状态码 200–299) - 或显式检查
response.status === 200 - 失败时别调
response.text(),否则可能拿到空串或错误页 HTML
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











