Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从盖茨比JS制作Axios post请求_Javascript_Reactjs_Rest_Axios_Gatsby - Fatal编程技术网

Javascript 从盖茨比JS制作Axios post请求

Javascript 从盖茨比JS制作Axios post请求,javascript,reactjs,rest,axios,gatsby,Javascript,Reactjs,Rest,Axios,Gatsby,我试图从我的组件状态中获取数据,然后将其发送到RESTAPI。我在提交函数中生成axios post req,但我知道这在gatsby中不起作用。当我从gatsby的onSubmit函数发出请求时,我的res.data是“此应用程序最适合Javascript”。我想知道我能向盖茨比发出post请求的最好方式是什么,这样我就可以从组件的状态传递数据。我一直在考虑将其用作我的gatsby-node.js文件,但是我不确定如何在其中获取组件的状态数据,以便在post req中使用它。谢谢 onSubm

我试图从我的组件状态中获取数据,然后将其发送到RESTAPI。我在提交函数中生成axios post req,但我知道这在gatsby中不起作用。当我从gatsby的onSubmit函数发出请求时,我的res.data是“此应用程序最适合Javascript”。我想知道我能向盖茨比发出post请求的最好方式是什么,这样我就可以从组件的状态传递数据。我一直在考虑将其用作我的gatsby-node.js文件,但是我不确定如何在其中获取组件的状态数据,以便在post req中使用它。谢谢

onSubmit函数

    //submits answers to backend
   Submit = () => {
    let {answers} = this.state
    axios
      .post("/done", answers)
      .then(res => this.setState({results:res.data,resultsStatus:true}))
      .catch(
        err => console.log(err)
      );
  };
要启动提交功能,我需要加载gif弹出窗口4秒钟,然后启动提交功能。内容请求是组件返回的jsx

 contentQuest = (
            <div className = 'results-loading'>
            Loading Results!
    <img src={require('./images/loading.gif')} className='results-loading-gif'/>
  </h2>
            </div>
          );
          setTimeout(() => {
            this.Submit()
          },4000)
编辑: 我试着把我的发帖请求改成这个

fetch('http://localhost:5000/api/done', {
    method: 'POST',
    body: JSON.stringify(answers),
    headers : { 
      'Content-Type': 'application/json',
      'Accept': 'application/json'
     }
  }) .then(res => {
      return res.json()})
      .then(res => console.log(res))
      .catch(
        err => {
          console.log(err)}
      );
  };
现在,我的控制台中有一条消息:


CORS策略已阻止在“”处从源“”获取的访问:对飞行前请求的响应未通过访问控制检查:请求的资源上不存在“访问控制允许源”标头。如果不透明响应满足您的需要,请将请求的模式设置为“no cors”,以获取禁用cors的资源。

因此,我需要将其包含在服务器文件中

app.use(function(req, res, next) {
  res.header(`Access-Control-Allow-Origin`, `http://localhost:9000`)
  res.header(`Access-Control-Allow-Credentials`, true)
  res.header(
    `Access-Control-Allow-Headers`,
    `Origin, X-Requested-With, Content-Type, Accept`
  )
  next();
});

你能分享一下在Submit上调用的组件吗?它是在表单中,还是在按钮中?完整的
onSubmit
函数看起来如何?@estevan是的,没问题,我在帖子中添加了更多信息
app.use(function(req, res, next) {
  res.header(`Access-Control-Allow-Origin`, `http://localhost:9000`)
  res.header(`Access-Control-Allow-Credentials`, true)
  res.header(
    `Access-Control-Allow-Headers`,
    `Origin, X-Requested-With, Content-Type, Accept`
  )
  next();
});