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

如何将textarea数据传递至Node.js?Node.js无法识别发送的数据

问题原因及解决步骤

1. 前端请求的问题:未指定Content-Type且数据格式不规范

你直接把textarea的字符串作为请求body发送,但未告知后端数据类型,导致后端无法正确解析;同时后端期望的是包含userMessage字段的键值对格式,而非纯字符串。

修改前端代码(二选一即可):

continueBtn.addEventListener("click", async () => {
    console.log(myMsg.value)
    console.log(typeof(myMsg.value))

    // 方式1:用FormData发送(适配表单类数据场景)
    const formData = new FormData();
    formData.append('userMessage', myMsg.value);
    const req = await fetch("/sendmsg", {
        method: "POST",
        body: formData
    });

    // 方式2:用JSON格式发送,需指定Content-Type
    // const req = await fetch("/sendmsg", {
    //     method: "POST",
    //     headers: {
    //         'Content-Type': 'application/json'
    //     },
    //     body: JSON.stringify({ userMessage: myMsg.value })
    // });

    console.log("Fetched")
})

2. 后端的问题:未配置解析中间件,且数据获取方式错误

首先要确保Node.js框架(以Express为例)配置了对应解析中间件,否则req.body会是undefined;其次你当前的解构写法完全错误,Object.keys(req.body)返回的是键名数组,无法直接解构出userMessage。

步骤1:配置解析中间件

在Node.js入口文件中添加:

const express = require('express');
const app = express();

// 适配FormData方式的解析中间件
app.use(express.urlencoded({ extended: true }));
// 适配JSON方式的解析中间件
app.use(express.json());

步骤2:正确获取请求数据

修改后端代码:

// 无论用FormData还是JSON方式,均可通过此方式获取字段值
const { userMessage } = req.body;

关键说明

  • 前端和后端的数据格式必须匹配:用FormData就对应urlencoded中间件,用JSON就对应json中间件;
  • 不建议直接发送纯字符串作为请求body,除非后端专门配置express.text()中间件并处理纯文本类型请求,常规场景下键值对或JSON格式更符合接口规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:15:07