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

除非您在生产模式下运行 express,否则不会出现缓存问题。

看起来当您按 时F5,在表单错误之后,您的请求正在通过 post 重新提交相同的表单(带有错误)。

选项1:

  • AJAX<3

选项 2:

  • 使用 2 种不同的玉模板,一种用于exports.postForm with errors,另一种用于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 回答