当前位置: 首页 > 知识库问答 >
问题:

如何从react到node获取表单数据。js?

宋劲
2023-03-14

我正在尝试使用axios或fetch将react组件的表单数据发送到服务器。我写的所有代码都失败了(在onSubmit中)。我的服务器端口是5000。我已经在服务器中设置了bodyParser。js也是。

应用程序。使用(bodyParser.json());应用程序。使用(bodyParser.urlencoded({extended:false}));

// React Component

const Voting = ({ history }) => {
  const [hasQuery, setQuery] = useState('');

  const [formData, setFormData] = useState({
    cat: false,
    dog: false,
  });

  const { cat, dog } = formData;

  const onChange = e => {
    let obj = {};

    obj[e.target.name] = e.target.checked;
    setFormData(obj);
  };

  const onSubmit = async e => {
    e.preventDefault();
     
    1. 
    // axios.post('http://localhost:5000/main', { formData }).then(result => {
    //   console.log(result, 'result');
    // });

    2. 
    fetch('http://localhost:5000/main', {
      method:'post',
      body: formData
    })
    .then(res => res.json())
    .then(data => alert(data.msg));

    3.
    // fetch('http://localhost:5000/main', {
    //   method: 'post',
    //   headers: {
    //     'Content-Type': 'application/json; charset=utf-8'
    //   },
    //   body: JSON.stringify(formData),
    // })
    //   .then(res => res.json())
    //   .then(obj => {
    //     if (obj.result === 'succ') {
    //       alert('Move on to the next.');
    //     }
    //   });

    history.push(`/success`);
  };

  return (
    <div>
      <p>{hasQuery}</p>
      <form
        className='mode-container'
        onSubmit={onSubmit}
        mathod='POST'
        action='http://localhost:5000/main'
      >
        <h3>Choose what you like more</h3>
        <div>
          <label>
            cat
            <input
              type='radio'
              name='cat'
              value={cat}
              onChange={onChange}
            />
          </label>
          <label>
            dog
            <input
              type='radio'
              name='dog'
              value={dog}
              onChange={onChange}
            />
          </label>
        </div>
        <button type='submit'></button>
      </form>
    </div>
  );
};

const mapStateToProps = state => ({
  isAuthenticated: state.auth.isAuthenticated,
});

export default connect(mapStateToProps)(Voting);

下面是我在node中编写的代码。js。请求。身体是一个空的物体。

// Node.js

mainRouter.post(
  '/',
  (req, _res, _next) => console.log(req, 'req.body'),
);

共有1个答案

闻人飞翼
2023-03-14

您在所有客户端调用中都针对/main,但在服务器上您只有/路由。

请尝试以下操作:

axios.post('http://localhost:5000/', { formData }).then(result => {
  console.log(result, 'result');
});

或-更改服务器路由:

mainRouter.post(
  '/main',
  (req, _res, _next) => console.log(req, 'req.body'),
);
 类似资料:
  • 我正在尝试将FormData从React JS发送到后端(express node server),如下所示。 我看到。我也尝试了这篇文章中的建议,但没有成功。感谢您的帮助。 如何从React js axios post请求发送FormData到节点服务器? 反应测试。js模块 快速Test.js 添加@con fused和@Kidas推荐的后,我可以在Express router中读取FormD

  • 我无法从API获取数据。我尝试了不同的方法,但没有成功。这是我的代码和API。我想通过react-fetch方法使用这些数据(JSON)。 当我使用这个获取api时,它正在工作。数据与上面的数据几乎相同,但那不是真正的Rest API。

  • 问题内容: 我想获取使用表单从页面传递的数据,并在重定向的页面中使用该数据。 我的客户端有以下表​​格: 我的服务器中有这个脚本: 问题答案: 使用)中间件: 然后,表单值将在req.body上: 设置允许bodyParser接受包括嵌套对象在内的表单数据中的json之类的数据。例如,使用javascript发送而不是使用传统HTML格式发送的名称/值对。如果不需要,可以将扩展值设置为false。

  • 问题内容: 我正在基于CodeIgniter的应用程序。这里的代码: 控制器 : 型号 : 查看 : Javascript : 上面的代码运行良好。 现在,我想通过ajax请求将数据提取到。我已经从url创建了一个ajax请求,可以从这里,where 和进行说。 Ajax响应产生: 问题 如何使用Ajax数据源配置数据表,以及如何将数据显示到表中,所以我可以使用数据例如创建类似代码的链接 问题答案

  • 例如,我重定向在我的水疗localhost:3000/ProductPage/014我如何采取'014'值我的反应变量?

  • 我必须得到一个特定用户的用户配置文件细节后,他们登录使用Firebase。现在,它正在返回我的FireStore中所有用户的详细信息。