假设用户获得了一个页面/表单/
GET /form/
POST /form/
服务器尝试验证用户输入并确定输入无效。
目前,用户的历史链是
GET /form/
POST /form/
现在服务器将用户重定向到GET /form/
页面,以便它可以再次填写表单(包含错误消息)。
他的历史似乎是
GET /form/
已填写表单字段GET /form/
未在表单字段中提交如果用户没有丢失他在第一张表单中输入的详细信息,我该如何发回用户?
有哪些技术可以将用户重定向回GET /form/
页面,而不是强制他们重新输入信息。
以下是此示例的express(node.js)特定服务器端代码。
验证中间件:
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
});
});
答案 0 :(得分:2)
请勿重定向无效输入。只在有效输入上执行。
在无效输入时,使用相同的表单响应POST请求,但这次填充了刚刚收到的POST数据。
答案 1 :(得分:0)
我决定将以下评论总结为我的答案:
对我而言,似乎只有两种可靠的方法:
1。将用户输入参数从服务器传回浏览器并重新填充表单:
a)使用传递给视图的参数对象并使用您的severside语言填充每个字段
b)使用loadJson
2。使用HTML5本地存储 - 这也需要JavaScript
如果您没有使用服务器或 JavaScript 来存储您的数据,那么您肯定会限制自己依赖浏览器 - 这是您无法控制的。< / p>
祝你好运 - 如果你确实找到了解决方案,那么请将它作为你的答案发布,因为我会非常感兴趣地看你是如何成功的。