PHP Javascript更改浏览器后退按钮行为Laravel

时间:2016-11-10 15:13:24

标签: javascript php jquery forms laravel

我知道有各种各样的线索要求几乎相同,但它们似乎都没有真正满足我的需求....

在我的网站上,我实施了一个搜索表单。带有输入字段的简单表单,称为searchQuery和提交按钮。表单使用POST方法发送。 我正在使用Laravel btw ..然后将搜索结果加载到控制器的视图中。这些显示在表格中。现在出现了一个有趣的部分:找到的元素是可点击的,你会在一个页面上看到有关该元素的更多细节。然后问题出现了:当我现在点击鼠标上的浏览器后退按钮或我的后退按钮时,我得到一个窗口,要求再次发送表单信息,我必须确认。

这不是我想要的,我想回到之前的搜索结果....

现在我读了很多,但我仍然不知道,怎么做。

我在onbeforeunload之前阅读,您可以在其中显示消息,但这对我没用(我想回到搜索结果中)...

因此,有一些替代方案是可能的(如果技术上可行):

  1. 只是阻止对话框要求再次提交信息,然后再次提交,而不要求
  2. 不知何故回到历史记录中的页面(缓存可能或类似的东西,搜索结果在那段时间内没有变化)
  3. 如果我愿意,我可以将搜索结果包含在http://servername/search/searchquery这样的网址中,然后将此搜索查询传递到deatil视图中,然后按一个按钮转到该网址,然后再次进行搜索或类似那。然后你可以(可能)覆盖浏览器后退按钮到"按"那个按钮而不是回到历史......
  4. 这些选项之一是否可行,如果是,如何?还是有其他方法可以提供建议吗?

1 个答案:

答案 0 :(得分:1)

根据您在上述问题中的评论,您可以这样做:

首先,您的表单应该是:

<form action="/search" method="GET">
    <input type="text" name="searchQuery" value="Type keywords here...">
    <input type="Submit" value="Search">
</form>

然后在提交表单后,路由/网址将是这样的:

http://localhost:8000/search?searchQuery=any_search_keyword
Route::get('search', 'SearchController@handleSearch'); // Laravel route

你可以在你的控制器中处理你的搜索:

function handleSearch() {
    $searchQuery = request()->get('searchQuery');
    // ... Handle your search here ...
}

通过这种方式,您可以使用GET方法来处理搜索,这也可以防止不必要的提交对话反复来回...

根据我的理解,这将是您正在寻找的解决方案