0

我使用 POST 而不是 GET 来查询数据,因为我有太多参数并且 url 看起来不太好。我注意到我的浏览器 (Chrome) 后退按钮能够返回到上一个 POST 生成的上一页。

如果需要,我想添加一个使用 HTML/Javascript/JSP/JSTL 或后端 Java 模拟此行为的按钮。有什么建议么?

例子:

用户在主页上,使用参数集 S1 进行 POST。

用户被带到使用参数集 S1 从 POST 加载的新页面。用户使用参数集 S2 执行另一个 POST。

用户被带到使用参数集 S2 从 POST 加载的新页面。

此时,我希望我的后退按钮将用户带回到由带有参数集 S1 的 POST 产生的页面。我是否必须保存并传递我当前的 POST 参数才能达到这种效果,还是有更简单的方法?

4

2 回答 2

0

通常使用的方法是:

<!-- in header: ->
<script>
function goBack()
  {
  window.history.back()
  }
</script>
<!-- in body ->
<input type="button" value="Back" onclick="goBack()">

但这不是这样做的最佳方法。通常,如果使用数据库和表单提交,您应该将变量保留在会话中,因此如果您按下按钮,您会再次发布上次使用的变量。

于 2013-10-12T10:13:48.933 回答
0

好吧:我解决了它。认为这就是你想要的。在第一次单击搜索按钮时。它设置会话。在第二次搜索时,它将会话重置为第一个搜索词。后退按钮然后使用第一个搜索词“返回”1 步。这只对 1 回去有好处。Aka 仅撤消 1 次搜索。根据您的需求进行定制,让我知道这就是您想要的。

<?php
session_start();
include("db.php");

if(isset($_POST['searchterm'])) {
    if($_SESSION['oldsearch'] == "") {
        $_SESSION['oldsearch'] = $_POST['searchterm'];
    } else {
    $_SESSION['oldsearch'] = $_POST['oldsearch'];
    }
    $searchterm = $_POST['searchterm'];
} else if (isset($_POST['back1'])) {
    $_SESSION['oldsearch'] = $_POST['back'];
    $searchterm = $_POST['back'];
} else {    
    $_SESSION['oldsearch'] = "";
    $searchterm = "";
}


    if(isset($_POST['searchterm']) || isset($_POST['back1']) ) {
    $query = mysql_query("SELECT * FROM kliendid WHERE name LIKE '%$searchterm%'"); 

    while ($row = mysql_fetch_array($query)) {
        echo "Found from database: ".$row['name']."<br>";
    }
    }


?>

<form name="back" id="back" method="post">
<input type="hidden" name="back" value="<?php echo $_SESSION['oldsearch']; ?>" />
<input type="submit" name="back1" id="back1" value="Back">
</form>

<form name="search" id="search" method="post">
<input type="hidden" name="oldsearch" id="oldsearch" value="<?php echo $_SESSION['oldsearch']; ?>" />
<input type="text" name="searchterm" value="" />
<input type="submit" name="search" id="search" value="Search">
</form>
于 2013-10-12T17:35:35.680 回答