PHP 怎么优雅的在表单发生错误时重定向到原来页面并保留原表单的数据?

2015-11-09 09:34:46 +08:00
 cevincheung

能不能不用 session ,能不能不用 js

5103 次点击
所在节点    PHP
35 条回复
66beta
2015-11-09 09:36:11 +08:00
可以啊,提交过来的数据,填到页面里去
cevincheung
2015-11-09 09:37:14 +08:00
@66beta
提交页面: submit.php
处理页面: save.php

save 验证表单发生了错误,怎么再回去并保留数据
odirus
2015-11-09 09:39:39 +08:00
最好还是用 session 吧,很多框架都提供了 flash data 功能。
frjalex
2015-11-09 09:40:12 +08:00
@cevincheung Ajax json POST
cevincheung
2015-11-09 09:40:41 +08:00
@odirus 那是怎么 flash 呢?
doushiyinweini
2015-11-09 09:40:52 +08:00
header('Cache-control: private, must-revalidate');
tibbers
2015-11-09 09:41:03 +08:00
如果只是单纯的页面跳转, js 的 history.go(-1),就行了,其实就是返回上一页面,数据不会丢
TangMonk
2015-11-09 09:41:07 +08:00
何必重定向,直接重新 render 。

if valid
redirect
esle
render "edit"
oott123
2015-11-09 09:42:23 +08:00
<form method=post>
<input name=a value="<?=$_POST['a']?:'';>">
shuax
2015-11-09 09:42:36 +08:00
提交数据不要刷新页面不就行了
cevincheung
2015-11-09 09:43:15 +08:00
@doushiyinweini
然后 location 回到之前的页面数据还在么?
phpcxy
2015-11-09 09:43:30 +08:00
像 laravel 的 falsh data 使用 session ,他的 session 可以用 Redis 驱动,不知楼主觉得这样算不用 session 吗
linauror
2015-11-09 09:46:29 +08:00
异步提交
cevincheung
2015-11-09 09:47:19 +08:00
@phpcxy 其实个人对 session 有点厌恶。一般用户登录什么的都是存加密的 cookie 。最近又开始纠结到底用不用 session 了……- -#
adexbn
2015-11-09 09:47:51 +08:00
基本不用 Form ,都是手动 js 异步提交的
odirus
2015-11-09 09:50:24 +08:00
@cevincheung 其实就是在你进行提交的时候, session 中可以保存一些数据,这些数据只会被取出一次,之后就会被删除。你看一下这个,应该对你有帮助, http://laravel-china.org/docs/5.0/session
cevincheung
2015-11-09 09:57:21 +08:00
@odirus 所以还是存到 session 中。每次请求都判断如果有就取出并删除如果没有就不做操作。就像 ci 的 userdata
cevincheung
2015-11-09 09:57:43 +08:00
@odirus

然后如果有需要就自动填充到表单里。
Lucups
2015-11-09 10:00:03 +08:00
wizardforcel
2015-11-09 10:03:02 +08:00
渲染表单所在的模板 把传进来的参数再填回去就行了

或者 ajax 发生错误的时候不跳转

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/234690

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX