javascript - Axios POST 的发送状态和数据未显示在 req.body 中

标签 javascript node.js reactjs axios xmlhttprequest

我正在使用 React,并想使用 Axios 发出 POST 请求。我正在尝试将表单数据发送到我的 Node 后端。

我正在尝试在 POST 请求中发送一个对象,该对象是保存所有用户对表单的输入的状态。

react

  const [formDetails, setFormDetails] = useState({})
  const handleFormChange = (evt) => setFormDetails({ ...formDetails, [evt.target.name]: evt.target.value })
  const sendInvoice = async (formDetails) => {
    const response = await axios.post('/api/new_invoice', formDetails)
    console.log(response)
}

Node 路由

module.exports = (app) => {
// Create a new invoice
app.post('/api/new_invoice', async (req, res) => {

    console.log('making a new invoice...')

    try {

        console.log(req.body)
        res.send(req.body)


    } catch (err) {
        console.log(err)
        res.status(400)
        res.send({ error: err })
        return
    }


})
}

这是我得到的回复: enter image description here

当我查看响应的 req.body 时,它是一个空对象,尽管我可以在发送表单时看到该状态。

我还尝试对一个对象进行硬编码,这将在 req.body 上显示数据。

例如,如果我将请求更改为

const response = await axios.post('/api/new_invoice', {formData: 'this is form data'})

然后我可以在 req.body 中看到 formData: 'this is form data'

最佳答案

您需要在 sendInvoice 函数中对 formData 进行字符串化,

您还可以分享来自 postman 的示例请求正文吗?您已经在那里测试了 API

let body= JSON.stringify(formData)

const config = {
      headers: {
        'Content-Type': 'application/JSON'
      }
    };
const res = await axios.post('/api/v1/new_invoice', body, config);



关于javascript - Axios POST 的发送状态和数据未显示在 req.body 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63762095/

相关文章:

javascript - 在不丢失光标位置的情况下更新输入的值

reactjs - 等待动态导入

javascript - 将 ES6 模块与 WebPack 一起使用,为什么还需要 require

javascript - 添加文件时状态中的重复条目

javascript - 如何将在 for 循环中选中的复选框中的数组值推送到另一个数组?

javascript - 在 AngularJS 中,如何加载隐藏元素的页面?

javascript - 按顺序运行列表中的函数,直到一个函数解析为止

node.js - 使用 Nightwatch 进行拖放

javascript - 无法从动态创建的表中删除多余的行

mysql - Node.js 图片库的数据库解决方案