2012-12-06 22 views
3

頁答:JavaScript的history.back損失的搜索結果

$(document).ready(function() { 
    bindData(); 
}); 

function bindData() { 
    $('#searchbtn').bind('click', function() { SearchResult(); }); 
} 
function SearchResult() { 
ajax call... 
} 

頁A HTML:

<input type="button" id="searchbtn" /> 

頁B詳細--->此頁面出現選擇從網頁中的特定搜索結果後搜索列表

<a href="javascript:history.back();">Back</a><br /> 

現在當我回到頁面時,AI可以看到我的搜索條件,因爲它們被選中,但res ult Div消失了。我所試圖做的是我想留在搜索列表頁面時回來。 我想我在這裏可以做的是如何在頁面返回時再次調用searchbtn click事件,以便列表再次出現。任何人都可以告訴我如何僅在頁面從頁面B返回時觸發searchbtn click事件。或者以正確的方式指向我。 感謝

回答

0
function bindData() { 
    var chkinput1 = $("input:checkbox[name=x]:checked").length; 
    var chkinput2 = $("input:checkbox[name=y]:checked").length; 

    if (chkinput1 > 0 && chkinput2 > 0) { 
     SearchResult(); 
    } 
    $('#searchbtn').bind('click', function() { SearchResult(); }); 
    } 

我知道這是實現這個結果的最糟糕的方式,但我認爲不是使用任何其他插件來增加複雜性,我們現在就去做這件事。如果其他人正在尋找同樣的問題,讓我再次告訴你,這不是最好的做法,因爲在返回歷史記錄時,我們將再次調用搜索結果,這取決於複選框的緩存輸入選擇,並再次生成整個ajax調用顯示列表。在第一次請求時,我緩存了列表並設置了滑動到期,所以它不需要任何時間復出,所以每個人都快樂地生活。

1

瀏覽器後退按鈕一直存在AJAX問題。有腳本,解決方法和技術,在那裏(具體取決於您要使用的架構)。

由於看來你是使用jQuery(根據您的發佈JavaScript語法),這裏是另一個Stackoverflow post regarding back button jQuery plugins的鏈接。

1

history.back()會返回到最後訪問的URL,這意味着在用戶訪問過程中所做的任何Ajax調用都不會自動重複。您的瀏覽器可能會自動恢復您的表單選擇,但SearchResults()功能僅由click事件調用,而不是選擇事件。

您可以使用一個框架像sammy.js綁定URL到阿賈克斯的狀態。這樣一來,history.back()將您帶到SearchResults()相關聯的URL。