2016-03-20 7 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-parser'の' urlencoded() 'ミドルウェア)を使用していますか? – mscdex

+0

私はこれを私のコードに持っています:app.use(bodyParser.json());これはあなたが右に言及しているものですか? – dtem052996

答えて

0

application/jsonフォーマットのフォームデータではなく、application/x-www-form-urlencodedフォームを送信するので、bodyParser.urlencoded({ extended: false })フォームミドルウェアを使用する必要があります。

+0

あなたが 'application/json'フォーマットのリクエストを送る他のフォームの投稿をしていない限りそうではありません。 – mscdex

0

私は何が間違っているかを考え出しました。 EJSコードに<%の後に "="を入れるのを忘れました。それはその後に働いた。

関連する問題