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

ReactJS+ExpressJS中如何将按钮文本值发送至服务器?

问题解决步骤

你的核心问题是调用guessHandling时没有传递按钮文本参数,同时需要确保服务器端正确解析JSON请求体,具体修改如下:

1. 修正客户端按钮的点击事件

在onClick回调中直接传入当前按钮的文本值option,这样guessHandling函数才能拿到正确的用户选择:

{question.options?.map((option, index) =>
    <button key={index} className={styles.answer} onClick={() => guessHandling(option)}>{option}</button>)}

2. 确保服务器端配置JSON解析中间件

如果你的Express服务器没有配置解析JSON请求体的中间件,req.body会是空对象,导致userGuess显示undefined。需要在路由之前添加以下代码:

// 必须放在所有路由定义之前
app.use(express.json());

app.post('/guess', (req, res) => {
  console.log(req.body.userGuess); // 现在能正常打印按钮文本
  res.send({
    returnStatus: "Guess Recieved"
  });
});

关于useState的补充说明

如果想用状态存储用户选择,也可以这样实现(但直接传参数更简洁):

const [userGuess, setUserGuess] = useState('');

const guessHandling = async () => {
  const res = await axios.post('/api/guess', { userGuess });
  setStatusMessage(res.data.returnStatus);
};

// 按钮点击时先更新状态再调用函数
{question.options?.map((option, index) =>
    <button key={index} className={styles.answer} onClick={() => {
        setUserGuess(option);
        guessHandling();
    }}>{option}</button>)}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 17:25:28