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

如何用Node.js和Express读取JS发送的XMLHttpRequest POST请求负载?

首先得给你的客户端代码提个小修正——你的xhr.send()直接传了对象,但XMLHttpRequest的send()方法对于JSON格式的请求体,需要传JSON字符串而不是原生对象,不然服务端会解析失败。所以客户端那边要改成这样:

setInterval(() => { 
  var xhr = new XMLHttpRequest(); 
  xhr.open('POST', "../getchat", true);
  xhr.onreadystatechange = (e) => { 
    if (xhr.readyState == 4 && xhr.status == 200) { 
      var response = JSON.parse(xhr.responseText); 
      document.getElementById("chat").innerHTML = ""; 
      for (let i = 0; i < response.length; i++) { 
        const element = response[i]; 
        document.getElementById("chat").innerHTML += "<p>" + element + "</p>"; 
      } 
    } 
  }; 
  xhr.setRequestHeader("Content-Type", "application/json"); 
  // 关键修正:把对象转为JSON字符串
  xhr.send(JSON.stringify({username: "#{username}", password: "#{password}"})); 
}, 3000);

接下来看服务端(Node.js + Express)的处理步骤:

服务端实现步骤

1. 初始化项目并安装依赖

如果还没创建Express项目,先执行以下命令初始化并安装依赖:

npm init -y
npm install express

2. 配置JSON请求体解析中间件

从Express 4.16.0版本开始,框架自带了express.json()中间件,专门用来解析Content-Type: application/json格式的请求体。你需要在入口文件中配置这个中间件:

3. 编写POST路由处理请求

创建/getchat的POST路由,通过req.body就能直接获取客户端发送的username和password参数。

完整的服务端示例代码如下:

const express = require('express');
const app = express();
const port = 3000; // 可根据你的需求修改端口号

// 配置JSON解析中间件,处理Content-Type为application/json的请求体
app.use(express.json());

// 处理POST请求到/getchat接口
app.post('/getchat', (req, res) => {
  // 从req.body中提取客户端发送的参数
  const { username, password } = req.body;
  
  // 这里可以添加你的业务逻辑,比如验证账号、查询聊天记录等
  console.log(`收到请求:用户名=${username},密码=${password}`);
  
  // 示例返回聊天数据(匹配客户端的渲染逻辑)
  res.json(['欢迎回来!', '这是一条新消息', '系统通知:服务正常运行']);
});

app.listen(port, () => {
  console.log(`服务器运行在http://localhost:${port}`);
});

核心逻辑说明

  • 客户端设置Content-Type: application/json,明确告诉服务端请求体的格式;
  • express.json()中间件会自动读取请求体内容,将其解析为JavaScript对象并挂载到req.body上;
  • 你在路由处理函数中直接通过req.body.username和req.body.password就能拿到客户端传递的参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:07:45