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

JavaScript获取TXT文件内容失效无报错,请求技术协助

解决XMLHttpRequest读取TXT并渲染到HTML元素的问题

你的代码存在几个关键问题,导致output元素无法显示内容:

  • 错误使用了client.length:XMLHttpRequest对象本身没有length属性,你需要的是返回文本的长度client.responseText.length,或者直接渲染文本内容。
  • 异步请求时机错误:XMLHttpRequest是异步操作,window.onload执行时请求可能还未完成,且你没有在请求完成的回调里处理DOM渲染,反而在window.onload中直接取值,逻辑顺序颠倒。
  • 未校验请求状态:onreadystatechange回调里没有判断请求是否完成且成功,可能拿到未就绪或错误的响应。

修正后的代码(XMLHttpRequest版本)

将请求逻辑放入window.onload中,确保DOM元素已加载,同时在请求成功的回调里处理渲染:

window.onload = function() {
  var client = new XMLHttpRequest();
  client.open('GET', '/old.txt');
  client.onreadystatechange = function() {
    // 检查请求是否完成且成功
    if (client.readyState === 4 && client.status === 200) {
      var textContent = client.responseText;
      // 显示文本长度
      document.getElementById('output').innerHTML = textContent.length;
      // 若要显示文本内容,替换为下面这行
      // document.getElementById('output').innerHTML = textContent;
    }
  };
  client.send();
};

现代浏览器推荐方案(fetch API)

用更简洁的fetch API替代旧的XMLHttpRequest,代码可读性更强:

window.onload = async function() {
  try {
    const response = await fetch('/old.txt');
    if (!response.ok) {
      throw new Error('请求失败');
    }
    const textContent = await response.text();
    // 显示文本长度
    document.getElementById('output').innerHTML = textContent.length;
    // 若要显示文本内容,替换为下面这行
    // document.getElementById('output').innerHTML = textContent;
  } catch (error) {
    document.getElementById('output').innerHTML = '加载失败:' + error.message;
  }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 04:02:01