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

我知道有各种各样的线程要求几乎相同的要求,但似乎没有一个真正满足我的需求。

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

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

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

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

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

只是阻止对话框要求再次提交信息,然后再次提交而不要求
不知何故回到了以前的历史记录页面(可能是缓存的或类似的东西,搜索结果在那个时候不会改变)
如果愿意,我可以将搜索内容包括在http://servername/search/searchquery之类的url中,然后将此searchquery传递到deatil视图中,并有一个按钮转到该URL,然后再次进行搜索或类似的操作。然后,您可以(也许)覆盖浏览器的后退按钮以“按下”该按钮,而不用返回历史记录...

这些选项之一可行吗?如果可以,怎么办?还是您可以提供其他建议?

参考方案

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

首先,您的表格应如下所示:

<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方法来处理搜索,这还可以防止不必要的来回对话框反复来回显示...

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

PHP json_encode数组到javascript关联数组 - javascript

我有一些从PHP中读取的mysqli列。它正在完美地获取和回显。$results = mysqli_fetch_assoc(mysqli_query($conn, $querystring)); echo json_encode($results); //$results = {"title":"Sea Shells"…

PHP-显示特殊字符 - javascript

允许用户输入的代码段//fetch user input and pass it in URL alertify.prompt("Please enter note/remarks for this Form (optional):", function (e,value) { if (e) { alertify.success(…

Mongo汇总 - javascript

我的收藏中有以下文件{ "_id": ObjectId("54490b8104f7142f22ecc97f"), "title": "Sample1", "slug": "samplenews", "cat": …

laravel如何验证动态添加的元素 - javascript

我的页面上有一个下拉列表选择an action。此选择的名称为action_id。使用可以有许多动作。因此,我添加了一个链接,当用户单击它时,我使用javascript和jquery生成了一个新选择,然后将此新选择添加到了DOM中。此新选择还具有名称action_id。最后,我将有许多名称为action_id的选择。我为您创建了这个jsfiddle来向您展示…

验证php中的javascript对象 - php

在我的用户界面中,用户可以构建一些javascript对象,例如:var box = { "width": "100px", "height": "200px", "click": function () { alert("You clicked t…