axios没有实现post请求

问题描述 投票:0回答:1

我试图用axios(NodeJS,ReactJS)发布数据,但我最终得到这个错误enter image description here

enter image description here

这是我的发布代码

axios({
              method: 'post',
              url: '/api/signup',
              data: 
              {
               username: this.state.username,
               name: this.state.name,
               surname: this.state.surname,
               email: this.state.email,
               password: this.state.password,
               confirm_password: this.state.confirm_password,
              }
       })
       .then(res => res.data)
       .then(url => window.location.href = url.location)
       .catch(error => this.setState({errorBol: true, errorMessage: error}))

和我的nodeJS代码

router.post('/', async (req,res)=>{
   const username = req.body.username;
   const name = req.body.name;
   const surname = req.body.surname;
   const email = req.body.email;
   const password = req.body.password;
   const confirm_password = req.body.confirm_password;

    console.log(username)
    console.log(name)
    console.log(surname)
    console.log(email)
    console.log(password)
    console.log(confirm_password)

   res.status(200).send({location: '/'})
})

我有这样的/ api / signup配置

 router.use('/api/main', require('./sinupfilename'))

所以问题不在router.post('/')中

关于问题:

我正在实施邮政申请表格提交并对表格进行验证,它运作完美但是当我点击提交按钮时它给我一个错误,所以如果有人知道线索,我会很高兴听到它

node.js reactjs express post http-post
1个回答
2
投票

看起来像issue is not with axios but with your render function。当您尝试渲染任何对象而不是有效的反应元素时,会出现上述问题。 问题可能出在setState for errorMessage变量。尝试打印errorMessage或typeof errorMessage以获取更多信息。它不应该是一个对象。

如果你读axaz的javascript object,那么错误就是official documentation

您需要提取错误消息并将其设置在errorMessage变量中。它应该工作正常。根据文档,同样可以这样做:

const err = ""
if (error.response) {
  err = error.response.data
} else if (error.request) {
  err = error.request.response
} else {
  err = error.message
}
this.setState({errorBol: true, errorMessage: err})

基本上,任何需要渲染的东西都必须是有效的反应元素,如字符串,html标签,数字而不是对象。因此,您需要确保渲染的内容,它需要是一个有效的反应元素。你可以阅读更多关于它here

希望它有所帮助,回复任何疑虑。

© www.soinside.com 2019 - 2024. All rights reserved.