Tôi có một trang tìm kiếm nơi mọi kết quả tìm kiếm được thêm vào trang bằng AJAX. Bằng cách này, tôi có thể cho phép người dùng tìm kiếm ví dụ: Led Zeppelin, sau đó thực hiện tìm kiếm khác cho Metallica nhưng thêm nó vào cùng danh sách kết quả như tìm kiếm trước đó.Hãy nhớ ajax đã thêm dữ liệu khi nhấn nút quay lại
Sự cố của tôi là khi người dùng nhấp vào liên kết tới bản ghi, sau đó chạm vào nút quay lại, quay lại kết quả tìm kiếm.
FireFox (7) giữ cho trang trông như khi tôi rời khỏi trang, hiển thị kết quả đầy đủ.
IE (7,8) và Chrome (15) mặt khác sẽ hiển thị trang vì nó là trước khi thêm bất kỳ kết quả tìm kiếm với AJAX, như thể nó không nhớ rằng tôi đã thêm dữ liệu vào nó.
Dưới đây là mã tôi sử dụng. Tôi đã cố gắng để thêm các location.hash = "test";
nhưng nó dường như không hoạt động.
// Add search result
$("#searchForm").submit(function (event) {
//location.hash = "test";
event.preventDefault();
$.post($(this).attr('action'), $(this).serialize(),
function (data) {
$("tbody").append(data);
});
});
Tôi không cần nút quay lại theo dõi các thay đổi trên trang tìm kiếm, như bước qua từng kết quả tìm kiếm khác nhau khi được thêm. Tôi chỉ muốn trình duyệt ghi nhớ kết quả tìm kiếm cuối cùng khi tôi nhấn nút quay lại.
SOLVED
Thay đổi để document.location.hash = "latest search"
không thay đổi bất cứ điều gì. Tôi đã phải sử dụng localStorage
như Amir chỉ ra.
này đi vào phần còn lại của mã 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);
}
});
cảm ơn nó hoạt động !! – joselo
Cách giải quyết của người lười biếng sẽ là sử dụng 'target =" _ blank "' trên tất cả các liên kết của bạn. Bằng cách này, nút quay lại sẽ không phải là một vấn đề. –