2013-10-12 26 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>