2016-03-20 35 views
0

我是node.js的新手,我想做的事情是將表單處理後的輸入表單數據傳遞迴輸入字段,如果表單中傳遞的數據有錯誤(例如:用戶名已被使用) 。我試圖在EJS的幫助下做到這一點,但表單似乎沒有檢索到這個值。如何在node.js中正確緩存表單輸入?

下面是我的app.js代碼片段:

app.use(bodyParser.urlencoded({ 
    extended: false 
})); 

app.use(bodyParser.json()); 
app.post('/',function(req,res){ 
    var username = req.body.username; 
    res.render('registration', {title: 'Registration', 
          username: username}); 
}); 

下面是我registration.ejs代碼片段:

<form class="form" action="/" method="post" name="regForm"> 

       <div class="form-group"> 
       <input type="text" value="<% username %>" name="username" class="form-control" id="username" placeholder="Username" onblur="validateUsername(this.value)" required> 
       </div> 
</form> 

在張貼我期待的用戶名的領域充滿了我輸入的價值,但它似乎並沒有發生。什麼可能導致它?

我正在做這個緩存的東西,還是有什麼辦法緩存表單輸入更好?

+0

你確定'req.body.username'是一個字符串嗎?您是否正在使用適當的body解析中間件(例如'body-parser' urlencoded()'中間件)? – mscdex

+0

我有我的代碼:app.use(bodyParser.json());這就是你指的對嗎? – dtem052996

回答

0

您需要使用bodyParser.urlencoded({ extended: false })表單解析中間件,因爲HTML表單提交的格式是application/x-www-form-urlencoded,而不是application/json格式的數據。

+0

除非您有發送'application/json'格式的請求的其他表單提交。 – mscdex

0

我想通了什麼是錯的。在我的EJS代碼中,我忘了在<%之後加「=」。它在那之後工作。