1

私は最近、express js で遊んでいて、とても気に入っています。私の問題は、無効なフォームを送信すると検証エラー メッセージが表示されますが、ページをリロードしてもエラー メッセージが表示されたままになることです。エラー メッセージがキャッシュされていると思われます。jade / swig でキャッシュを無効にする方法はありますか? また、キャッシュするページとキャッシュしないページを指定する方法 (フォームなど) はありますか?

サンプルコード:

filename: index.js
// app.get('/form', index.getForm)
exports.getForm = function(req, res){
 res.render('form');
}

// app.post('/form', index.postForm)
exports.postForm = function(req, res){
 // express form validation goes here ...
 if(errors){
  res.locals.errors = errors;
  res.locals.form = req.body;
  exports.getForm(req, res);
 }else{
  res.redirect('/welcome');
 }
}

そしてこれが私の翡翠です

filename: form.jade
 if error.email
  .error=error.email.msg
  input#email(type='email', name='email', value='#{form.email}')
 else
  input#email(type='email', name='email', value='#{form.email}')
4

1 に答える 1

1

本番モードでエクスプレスを実行していない限り、キャッシュの問題はありません。

を押すF5と、フォームエラーの後、リクエストが同じフォームを郵送で再送信しているようです(エラーあり)。

オプション1:

  • AJAX<3

オプション 2:

  • 2 つの異なるヒスイ テンプレートを使用します。1 つは 用、exports.postForm with errorsもう1 つは 用exports.getFormです。何かのようなもの:

    exports.getForm = function(req, res) {
        res.render('form');
        }
    
    
    exports.postForm = function(req, res) {
        // express form validation goes here.
        if(errors) {
            res.locals.errors = errors;
            res.locals.form = req.body;
            res.render('form_fail');  <----
        }
        else {
            res.redirect('/welcome');
       }
    }
    
于 2013-07-08T23:44:37.710 に答える