我有一个搜索页面,每个搜索结果添加到AJAX页面。这样我可以让用户搜索例如Led Zeppelin,然后再搜索Metallica,但将它添加到与上一次搜索相同的结果列表中。记住ajax添加数据时点击返回按钮
我的问题是当用户点击一个链接到记录,然后点击后退按钮,回到搜索结果。
FireFox(7)使页面保持原样,当我离开它时,显示完整的结果。
IE(7,8)和另一方面,Chrome(15)会像添加AJAX之前一样显示页面,就好像它不记得我向它添加数据一样。
以下是我使用的代码。我试图添加location.hash = "test";
,但它似乎没有工作。
// Add search result
$("#searchForm").submit(function (event) {
//location.hash = "test";
event.preventDefault();
$.post($(this).attr('action'), $(this).serialize(),
function (data) {
$("tbody").append(data);
});
});
我不需要一个后退按钮来跟踪搜索页面上的变化,就像逐步添加每个不同的搜索结果一样。当我点击后退按钮时,我只想让浏览器记住上次的搜索结果。
解决
更改为document.location.hash = "latest search"
没有任何改变。埃米尔指出,我必须使用localStorage
。
这进入了jQuery代码的其余部分:
// Replace the search result table on load.
if (('localStorage' in window) && window['localStorage'] !== null) {
if ('myTable' in localStorage && window.location.hash) {
$("#myTable").html(localStorage.getItem('myTable'));
}
}
// Save the search result table when leaving the page.
$(window).unload(function() {
if (('localStorage' in window) && window['localStorage'] !== null) {
var form = $("#myTable").html();
localStorage.setItem('myTable', form);
}
});
谢谢它的作品! – joselo
懒人的解决方法是在所有链接上使用'target =“_ blank”'。这样后退按钮不会成为问题。 –