javascript - 错误 : Form submission canceled because the form is not connected

标签 javascript reactjs

免责声明可能重复:我也有类似的问题,我想我现在已经阅读了几乎所有这些答案,但没有一个为我解决了这个问题。
我有一个应用程序,前端是 React,后端是 flask 服务器。我有一个大问题。代码似乎检查了前端和后端,但是在我单击表单的提交按钮后,我在 JS 控制台中收到错误:Form submission canceled because the form is not connected.现在,我的表单上只有一个按钮,类型为 submit , 与 handleSubmit form 中的处理程序标签,所以我认为这不是导致问题的原因。
我还添加了这个配置对象来处理潜在的 CORS 错误,但至少我没有收到任何 CORS 错误。
React 表单组件代码:

import React, { useState } from "react";
import axios from "axios";
import Button from "@material-ui/core/Button";
import { TextField } from "@material-ui/core";
import DisplayUpper from "./DisplayUpper";

function Form() {
  const [inputText, setInputText] = useState("");
  const [fetchedData, setFetchedData] = useState("");
  const [isSubmitted, setSubmitted] = useState(false);

  const handleSubmit = (e) => {
    setSubmitted(true);

    console.log("button clicked");

    const config = {
      headers: { "Access-Control-Allow-Origin": "*" },
    };

    axios
      .post(
        "http://localhost:5000/process",
        {
          inputText: inputText,
        },
        config
      )
      .then((res) => {
        console.log("res", res);
        setFetchedData(res.data);
      })
      .catch((er) => {
        console.log(er);
      });
  };

  return (
    <div>
      <form onSubmit={handleSubmit} method="post">
        <label>
          Enter Text :
          <TextField
            multiline={true}
            variant="outlined"
            name="inputText"
            value={inputText}
            onChange={(e) => setInputText(e.target.value)}
          />
        </label>
        <Button variant="contained" color="primary" type="submit" name="Submit">
          SUBMIT
        </Button>
      </form>
      {isSubmitted && <DisplayUpper />}
    </div>
  );
}

export default Form;
然后,app.py 代码:
@app.route('/process', methods=['POST'])
def result():
    text = request.form.get('inputText')
    upper_text = text.upper()
    print(upper_text)
    return upper_text
我在 package.json 中设置了代理:“http://localhost:5000”。

最佳答案

浏览器正在尝试通过表单上的方法将您的表单提交到当前 URL,当按钮 type="submit" 时它里面正在被点击。
当您使用 javascript 处理表单提交时,您应该防止表单的默认行为:

const handleSubmit = (e) => {
  e.preventDefault();
  ...
}

关于javascript - 错误 : Form submission canceled because the form is not connected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66327333/

相关文章:

javascript - 如何搜索 li 包含文本值?

javascript - Mongo 聚合计数值实例

javascript - ICanHaz.js - 可以在部分中使用字符串数组而不是键/值对吗?

javascript - 当有条件地渲染具有 ref 属性的组件时,无法从未定义中读取属性 ...

javascript - Reactjs/Redux 编辑功能不起作用

javascript - 将对象中的数组传递给函数

javascript - 如何从 IE8 缓存中清除 Javascript?

javascript - 在 React 中,是否可以避免在按下浏览器后退按钮时从服务器重新加载数据(不使用 Redux)?

reactjs - 如何在使用 axios.get 方法加载页面时仅从 API 获取一次数据?

javascript - 类型错误:queryClient.defaultQueryObserverOptions 不是函数