【发布时间】:2017-03-24 16:17:02
【问题描述】:
我知道有各种线程要求几乎相同,但似乎没有一个能真正满足我的需求....
在我的网站上,我实现了一个搜索表单。一个简单的表单,带有一个名为searchQuery 的输入字段和一个提交按钮。表单使用 POST 方法发送。
我正在使用 Laravel btw .. 然后将搜索结果从控制器加载到视图中。这些显示在表格中。现在到了有趣的部分:找到的元素是可点击的,您将进入一个包含有关该元素的更多详细信息的页面。然后问题来了:当我现在单击浏览器的后退按钮或鼠标上的后退按钮时,我得到一个窗口,要求再次发送表单信息,我必须确认。
这不是我想要的,我只想回到我之前的搜索结果......
现在我读了很多,但仍然不知道该怎么做。
我在onbeforeunload 之前阅读过,您可以在其中显示一条消息,但这对我没有用(我想返回搜索结果)...
所以有一些替代方案是可能的(如果技术上可行的话):
- 只是阻止对话框要求再次提交信息,然后再次提交而不要求再次提交
- 不知何故在历史记录中回到之前的页面(可能缓存或类似的东西,搜索结果在那个时候不会改变)
- 如果我愿意,我可以将搜索包含在像
http://servername/search/searchquery这样的url 中,然后将此搜索查询传递到deatil 视图,并有一个按钮可以转到该url,然后再次进行搜索或类似的东西。然后您可以(也许)覆盖浏览器的后退按钮以“按下”该按钮,而不是返回历史...
这些选项之一是否可能,如果是,如何?或者您有什么其他的建议吗?
【问题讨论】:
-
在这种情况下使用 GET 方法...使用 GET 发送参数
-
可能是可能的,但是我通过 post 处理所有其他请求,或者直接将其写入 URL 中,例如
/search/searchquery而不是/search?term=searchquery,这也可以吗?如果是怎么办?因为那时我不会提交表单,而只是使用链接去那里,但是,按 Enter 将不再起作用.. -
改变浏览器的行为对于你想要达到的目标来说似乎是一种矫枉过正。我宁愿改变你处理请求的方式。 @SaumyaRastogi 有一个很好的建议
-
请看下面我发布的答案 - @nameless
标签: javascript php jquery forms laravel