幕布斯7119047
2023-02-17 17:52:47
我正在使用 React 并想使用 Axios 發(fā)出 POST 請求。我正在嘗試將表單數(shù)據(jù)發(fā)送到我的節(jié)點后端。我正在嘗試在 POST 請求中發(fā)送一個對象,該對象是將所有用戶輸入保存到表單的狀態(tài)。反應(yīng) 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)}節(jié)點路由module.exports = (app) => {// Create a new invoiceapp.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 }})}這就是我得到的: 當(dāng)我查看響應(yīng)的 req.body 時,它是一個空對象,即使我可以在發(fā)送表單時看到狀態(tài)存在。我還嘗試對對象進行硬編碼,這將在 req.body 上顯示數(shù)據(jù)。例如,如果我將請求更改為const response = await axios.post('/api/new_invoice', {formData: 'this is form data'})然后我可以在 req.body 中看到 formData: 'this is form data'
2 回答

天涯盡頭無女友
TA貢獻1831條經(jīng)驗 獲得超9個贊
您需要將 formData 字符串化,在您的 sendInvoice 函數(shù)中,
您還可以分享郵遞員的示例請求正文嗎?您已經(jīng)在那里測試了 API
let body= JSON.stringify(formData)
const config = {
headers: {
'Content-Type': 'application/JSON'
}
};
const res = await axios.post('/api/v1/new_invoice', body, config);

慕標(biāo)琳琳
TA貢獻1830條經(jīng)驗 獲得超9個贊
要處理來自 HTTP POST 請求的傳入 JSON 對象,您需要編寫以下代碼 -
var express = require('express');
var app=express();
app.use(express.urlencoded()); // To parse URL-encoded bodies
app.use(express.json()); //To parse JSON bodies
// Note: (*applicable for Express 4.16+ )
添加回答
舉報
0/150
提交
取消