2013-10-12 27 views
0

我正在使用POST而不是GET来查询数据,因为我有太多的参数,网址看起来不太好。我注意到我的浏览器(Chrome)后退按钮能够返回到上一次POST生成的上一页。HTML/Javascript/JSP/JSTL:如何用POST数据模拟浏览器的后退按钮?

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

示例:

用户在主页上,执行参数集S1的POST。

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

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

在这一点上,我希望我的后退按钮让用户回到带有参数集S1的POST产生的页面。我是否需要保存并传递当前POST参数以实现此效果,还是有更简单的方法?

回答

0

通常采用的方法是:

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

但这不是这样做的最佳方法。通常如果使用数据库和表单提交,你应该保持会话中的变量,所以如果你按下按钮,你会再次发布最后使用的变量。

+0

我试过这个,但它只是带我到前一页没有后期参数,它不同于浏览器后退按钮。我需要用户能够回到以前的搜索。 – Popcorn

0

嗯:我工作过。认为这是你想要的。首先点击搜索按钮。它设置会话。在第二次搜索时,会将会话重置为第一个搜索词。 Back Buton然后使用第一个搜索词来“回去”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>