我怎样才能在不丢失表单数据的情况下获得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数据填充。