我有一个搜索页面,其中每个搜索结果都通过AJAX添加到页面中。这样,我可以让用户搜索 Led Zeppelin ,然后再次搜索 Metallica, 但将其添加到与上一次搜索相同的结果列表中。
我的问题是,当用户单击指向记录的链接,然后单击“后退”按钮,回到搜索结果时。 FireFox(7) 保持页面离开时的外观,显示完整结果。另一方面, IE(7,8) 和 Chrome(15) 将显示该页面,就像在不使用AJAX添加任何搜索结果之前一样。
下面是我使用的代码。我尝试添加,location.hash = "test";但似乎没有用。
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"没有任何改变。我不得不使用localStorageAmir指出的。
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); } });
您有几种选择。
document.location.hash = "last search"
我会使用localstorage和散列解决方案,因为这是某些网站所做的。您还可以复制和粘贴URL,它将仅加载相同的查询。这很好,我会说很方便。
我很想知道为什么它不起作用。更新您的答案,以便我们提供帮助。