使用帖子/重定向/获取模式,您可以阻止重复表单提交。例如,您可以阻止您的在线购物网站的访问者两次订购相同的商品。
但是,在访问者刷新页面而不使用AJAX调用之后,是否可以阻止此类重复操作,但是接收并维护在DOM上发送的输入值?
为了澄清这一点,这是一个例子。
<form>
,多个<input>
和提交按钮。(e.g. ordering an item)
。刷新时需要阻止执行此功能。所以,换句话说......
单击按钮时使用 POST 。 <input>
值将保留在DOM中。
首次到达页面时,您使用 GET 。当然没有<input>
值。但是,当您刷新页面时,您将维护<input>
。
这个问题可能是主观的,但如果你愿意提供任何见解,我真的很感激,因为我没有人要求这样的帮助。
(我使用Laravel / PHP)
答案 0 :(得分:3)
您需要通过GET传输这些值 有两种选择:
如果您只是在会话中保存数据,则可以从那里读取数据并重新填充表单。如果你把它放到URL中,你可以从那里读取它;但很明显,URL会包含大量数据。
从会话中读取数据对于特定页面/重定向不是唯一的,但无论如何,在同一会话中再次打开该页面将显示相同的数据。通过URL传递数据将使其对特定请求而言是唯一的。
作为中间立场,您可以将数据保存在与特定随机ID绑定的会话中,使用此ID在URL中重定向(例如example.com/foo.php?i=12345
),从会话中重新填充数据特定身份。
答案 1 :(得分:1)
我没有测试下面的代码,但我相信它对你很有帮助。
只有在处理Laravel
框架时,它才有效。
请试试这个..
return redirect('/Your-page-url')
->withInput();
答案 2 :(得分:-1)
看来你正在寻找会话存储