我怎样才能在不丢失表单数据的情况下获得redir

比方说,一个用户得到一个页面/表格/

GET /form/

然后,他填写表格并发送邮寄请求

POST /form/

服务器尝试validation用户input并确定input无效。

目前用户的历史链是

  • GET /form/
  • POST /form/

现在,服务器将用户redirect到GET /form/ page,以便它可以再次填写表单(带有错误消息)。

他的历史看起来像

  • GET /form/填写表单域
  • GET /form/无需填写表单字段

如何在没有用户丢失他在第一个表单中input的详细信息的情况下将用户返回?

有什么技术可以将用户redirect到GET /form/ page,而不是强迫他们重新input信息。

下面是这个例子的express(node.js)特定的服务器端代码。

validation中间件:

 validate().on("error", function _error(msg) { // store error message on request object req.flash(msg, validateUserMessage[msg]); }).on("valid", function _valid() { // handle the rest of /POST/ next(); }).on("invalid", function _invalid() { // redirect user back to last page, the /GET/ form res.redirect("back"); }).run(function _validateUsers(check, sanitize) { // validation logic. }); 

路由:

 // GET /form/ app.get("/form", function _signUpView(req, res) { // render /form/ res.render("auth/signup", req.flash()); }); // POST /form/ // validation middleware used here. app.post("/form", secure.validateUser, function _signUpCreate(req, res) { model.create(req.body, function _create() { // create thing in database }); }); 

我决定总结下面的评论到我的答案:

对我来说,似乎只有两个确定的方法来做到这一点:

1.将用户input参数从服务器传递回浏览器,并重新填写表单:

a)使用传递给视图的参数对象,并使用您的语言填充每个字段

b)传递一个Json对象并使用loadJson填充表单

2.使用HTML5本地存储 – 也需要JavaScript

如果你不使用服务器或者JavaScript来持久化你的数据,那么你肯定会限制自己依靠浏览器 – 这是你无法控制的。

祝你好运 – 如果你find了解决scheme,那么请把它作为你的答案,因为我会非常感兴趣,看看你是如何成功的。

不要在无效input上redirect。 只在有效的input上进行。

在input无效的情况下,以相同的格式回复POST请求,但是这次使用刚收到的POST数据填充。