如何使用post / redirect / get保持POST方法的输入值?

时间:2016-04-18 11:21:24

标签: php html laravel laravel-5.2

使用帖子/重定向/获取模式,您可以阻止重复表单提交。例如,您可以阻止您的在线购物网站的访问者两次订购相同的商品。

但是,在访问者刷新页面而不使用AJAX调用之后,是否可以阻止此类重复操作,但是接收并维护在DOM上发送的输入值?

为了澄清这一点,这是一个例子。

  1. 您只有一个页面,其中包含<form>,多个<input>和提交按钮。
  2. 您需要使用POST方法,以便在单击按钮后运行特定函数(e.g. ordering an item)。刷新时需要阻止执行此功能。
  3. 您将返回具有输入值的同一页面,并在DOM中的某处具有值。
  4. 刷新按钮时,&#34; 2&#34;中描述的功能一定不要跑。但是,即使刷新后也必须保持输入值。
  5. 所以,换句话说......

    单击按钮时使用 POST <input>值将保留在DOM中。

    首次到达页面时,您使用 GET 。当然没有<input>值。但是,当您刷新页面时,您将维护<input>

    这个问题可能是主观的,但如果你愿意提供任何见解,我真的很感激,因为我没有人要求这样的帮助。

    (我使用Laravel / PHP)

3 个答案:

答案 0 :(得分:3)

您需要通过GET传输这些值 有两种选择:

  1. 会话
  2. 网址查询参数
  3. 如果您只是在会话中保存数据,则可以从那里读取数据并重新填充表单。如果你把它放到URL中,你可以从那里读取它;但很明显,URL会包含大量数据。

    从会话中读取数据对于特定页面/重定向不是唯一的,但无论如何,在同一会话中再次打开该页面将显示相同的数据。通过URL传递数据将使其对特定请求而言是唯一的。

    作为中间立场,您可以将数据保存在与特定随机ID绑定的会话中,使用此ID在URL中重定向(例如example.com/foo.php?i=12345),从会话中重新填充数据特定身份。

答案 1 :(得分:1)

我没有测试下面的代码,但我相信它对你很有帮助。

只有在处理Laravel框架时,它才有效。

请试试这个..

  return redirect('/Your-page-url')
            ->withInput();  

答案 2 :(得分:-1)

看来你正在寻找会话存储