2017-06-16 100 views
1

我正在使用Node.js創建一個API POST並進行表達。我只是想用html格式發佈一些數據:HTML表單請求正文空 - NodeJs

<form id="myform" action="http://localhost:4000/add" method="post" enctype="application/json"> 
    <input type="text" name="name" id="name" /> 
    <input type="submit" id="submit" /> 
</form> 

服務器只會收到POST請求並將主體顯示到console.log中。

router.post('/add', function (req, res){ 
    console.log("request: "+JSON.stringify(req.body)); 
}) 

什麼是在控制檯接收是: 要求:{}

嘗試後到郵差使用相同的API - 生,JSON(應用/ JSON),東西很好地工作。

有人能告訴我我在做什麼錯?

+0

問題是以前問:https://stackoverflow.com/questions/4295782/how-do-you-extract-post-data-in-node-js –

回答

2

瀏覽器不支持將HTML表單作爲application/json提交。大多數瀏覽器可能會忽略該值並將該表單作爲默認enctype發送,該應用程序是application/x-www-form-urlencoded。爲了解析這個問題,你需要使用合適的中間件。一個這樣的例子是body-parser模塊的urlencoded() middleware

+0

太棒了!謝謝,解決了我的問題:我剛剛添加了'app.use(bodyParser.urlencoded({extended:false}))',這是我已經擁有的json body-parser的附加功能。 – Zaphoid

0

動作屬性你不需要具體的主機只需指定路徑,如「/add」。

+0

這只是真的,如果你從同一臺服務器調用(例如,如果html文件也是本地主機)。 – Zaphoid