無法將資料從axios傳送到傳回空對象的node伺服器-PHP中文網路問答
無法將資料從axios傳送到傳回空對象的node伺服器
P粉141911244
P粉141911244 2024-03-31 11:14:22
0
1
2441

我的客戶端程式碼:

     Document  

我的伺服器端程式碼:

const app = express(); const path = require("path"); app.use(express.static('./public',{index:'form.html'})); app.use(express.urlencoded({extended:true})); app.post('/login',(req,res)=>{ //const txt = req.body; console.log('logged data: ',req.body); res.send('Thanks'); }) app.listen(8080, () => { console.log('server is running...in port 8080') });

首先請記住,我是後端新手。當我嘗試console.log 記錄的資料時,它返回一個空對象,我無法理解為什麼我的req.body 返回一個空對象,但是當我嘗試透過給出action:"/login" 和方法來執行相同操作時:表單標籤內的“post”它按預期工作並為我提供我提供的輸入。請有人幫助我,我的頭在燃燒,提前謝謝你。

P粉141911244
P粉141911244

全部回覆 (1)
P粉333186285

req.body是空的,因為當您使用axios發送它時,您實際上發送的是JSON (application/json) 負載,且後端沒有JSON 負載解析器,只有URL 編碼,而HTML 表單以application/x-www-form-urlencoded格式傳送它,這就是它運作的原因。

因此,您需要使用 axios 發送 URL 編碼的請求,您可以使用URLSearchParams將 JSON 物件轉換為查詢字串。試試這個。

axios .post("http://localhost:8080/login", new URLSearchParams(formObject))

或者,只需在後端添加 JSON 解析器,您的原始 JSON 請求就可以工作,使用內建解析器:

app.use(express.json());
    最新下載
    更多>
    網站特效
    網站源碼
    網站素材
    前端模板
    關於我們 免責聲明 Sitemap
    PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!