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

定时HTTP请求失效:聊天页面30秒刷新新消息功能异常

解决聊天消息刷新未发起HTTP请求的问题

嘿,我一眼就看到问题所在了——你的代码漏了最关键的一步:发送请求!我来帮你把问题理清楚,顺便给你修复后的完整方案:

核心问题:缺少send()调用

XMLHttpRequest对象在调用open()配置请求、设置完请求头之后,必须调用send()方法才会真正发起HTTP请求。你的代码只完成了前两步,自然看不到任何网络请求。

修复后的完整代码示例

function loadmessages(){ 
  var ids = document.getElementById("pid").value; 
  var request = new XMLHttpRequest(); 
  
  // 1. 配置GET请求
  request.open("get", '/refresh_message/'+ ids ); 
  
  // 注意:GET请求不需要设置Content-Type(没有请求体),建议移除这行
  // request.setRequestHeader("Content-Type", "application/json;charset=UTF-8"); 
  
  // 补全CSRF请求头(根据你的项目实际情况调整token获取方式)
  request.setRequestHeader("X-CSRFToken", getCsrfToken()); 
  
  // 2. 监听请求完成事件,处理返回的新消息
  request.onload = function() {
    if (request.status >= 200 && request.status < 400) {
      // 这里写更新聊天界面的逻辑,比如把新消息插入DOM
      const newMessages = JSON.parse(request.responseText);
      const chatContainer = document.getElementById("chat-box");
      newMessages.forEach(msg => {
        const msgElement = document.createElement("div");
        msgElement.className = "chat-message";
        msgElement.textContent = msg.content;
        chatContainer.appendChild(msgElement);
      });
    } else {
      console.error('加载消息失败:', request.statusText);
    }
  };
  
  // 3. 关键!发送请求(你之前完全漏掉了这一步)
  request.send(); 
}

// 辅助函数:获取CSRF Token(以常见的Django项目为例,从Cookie中读取)
function getCsrfToken() {
  const cookieList = document.cookie.split(';');
  for (let cookie of cookieList) {
    const [name, value] = cookie.trim().split('=');
    if (name === 'csrftoken') return value;
  }
  return '';
}

// 确保定时任务正确设置,每30秒执行一次刷新
setInterval(loadmessages, 30000);

额外需要注意的细节

  • GET请求的Content-Type:GET请求没有请求体,设置Content-Type是多余的,甚至可能导致服务器端解析异常,直接删掉就行。
  • CSRF头完整性:你的代码里X-CSRF...没写完,一定要补全完整的CSRF Token,否则服务器大概率会拒绝请求。上面的示例提供了一个通用的Cookie读取方式,你可以根据自己的项目框架调整。
  • 错误处理:添加onload事件监听,既能处理成功返回的消息,也能在请求失败时快速排查问题。
  • 定时器验证:确认你已经通过setInterval(loadmessages, 30000)正确设置了定时任务,确保函数确实每30秒被调用一次。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:01:15