You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VanillaJS中如何将fetch请求返回的HTML字符串转换为合法DOM结构?

问题根因

  • 接口返回的是经过JSON序列化的HTML字符串,并非原生HTML文本:你拿到的响应外层的双引号、属性前的反斜杠都是JSON序列化的转义标记,jQuery的$.ajax会自动根据响应头Content-Type完成JSON解析,你当前使用fetch时没有执行解析步骤,直接当作纯文本处理才会残留转义符。
  • 代码存在拼写错误:innerHtml的大小写错误,正确属性名为innerHTML;另外此处不需要额外调用DOMParser做转换,属于多余操作。

修复代码

标准方案(和jQuery行为对齐,自动识别JSON响应)

fetch(url, {
    headers: {
        'X-Requested-With': 'XMLHttpRequest'
    }
})
.then(response => response.json())
.then(htmlStr => {
    document.getElementById('table-section').innerHTML = htmlStr;
})
.catch(err => console.error('请求失败', err))

兼容方案(接口未返回正确JSON响应头时使用)

如果你的接口没有返回application/json类型的响应头,无法直接用response.json()解析,可以手动处理文本内容:

fetch(url, {
    headers: {
        'X-Requested-With': 'XMLHttpRequest'
    }
})
.then(response => response.text())
.then(data => {
    // 手动解析序列化后的字符串得到原生HTML
    const htmlStr = JSON.parse(data);
    document.getElementById('table-section').innerHTML = htmlStr;
})

内容的提问来源于stack exchange,提问作者Larave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 06:54:05