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

如何将ReactJS前端输入数据传递到Flask-Python后端

React + Flask 搜索框数据传递修复方案

问题排查&修复步骤

前端代码修改点

  • 原有fetch请求缺少Content-Type: application/json请求头,Flask默认无法正确解析JSON格式的请求体,需要补充该配置
  • 建议先完成接口请求再执行页面跳转,避免页面跳转导致未完成的fetch请求被强制中断
  • 新增请求响应打印和错误捕获逻辑,方便前端侧验证请求是否发送成功
    修改后完整代码:
import { useState } from 'react';
import { useNavigate } from 'react-router-dom';
import { Input } from 'antd'; // 可根据你实际的组件引入路径调整

function SearchBar() {
  const [searchedText, setSearchedText] = useState("");
  let navigate = useNavigate();

  const onSearch = async () => {
    try {
      // 先发送接口请求
      const res = await fetch('/ML/search',{
        method: 'POST',
        headers: {
          'Content-Type': 'application/json'
        },
        body: JSON.stringify({
          content: searchedText
        })
      });
      // 打印后端返回结果,验证数据传递状态
      const resData = await res.json();
      console.log('后端返回的接收内容:', resData);
      // 请求完成后再执行页面跳转
      navigate(`/search?q=${searchedText}`);
    } catch (err) {
      console.error('请求发送失败:', err);
    }
  };
  return (
    <div>
      <Input.Search
        placeholder="Enter keyword..."
        onChange={(e) => {
          setSearchedText(e.target.value);
        }}
        onSearch={onSearch}
        onPressEnter={onSearch}
        enterButton>
      </Input.Search>
    </div>
  );
}
export default SearchBar;

后端代码修改点

  • 直接使用Flask内置的request.get_json()方法解析JSON请求体,无需手动调用json.loads,兼容性更好
  • 新增后端控制台打印逻辑,可直接在Flask运行终端查看接收到的搜索内容
  • 后续使用搜索内容查询SQL时,务必使用参数化查询,避免SQL注入风险
    修改后完整代码:
from flask import request, jsonify

@app.route('/ML/search', methods=['POST'])
def search():
    request_data = request.get_json()
    # 取到前端传递的搜索内容,可直接作为变量用于后续SQL查询
    searchData = request_data.get('content', '')
    # 后端控制台打印接收内容,直观验证传递结果
    print('接收到的前端搜索内容:', searchData)
    # SQL查询示例(参数化写法):
    # cursor.execute("SELECT * FROM 你的表名 WHERE 要查询的列名 = %s", (searchData,))
    return jsonify({"received_content": searchData})

验证方式

  • 前端:按F12打开浏览器控制台,输入内容触发搜索后,可在「控制台」面板查看打印的返回结果,也可在「Network」面板找到/ML/search请求,查看请求体、响应是否符合预期
  • 后端:直接查看Flask运行的终端窗口,是否打印了你输入的搜索内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:54:08