J'ai une page de recherche où chaque résultat de recherche est ajouté à la page avec AJAX. De cette façon, je peux permettre aux utilisateurs de rechercher des e.g Led Zeppelin, puis faire une autre recherche pour Metallica , mais l'ajouter à la même liste de résultats de la recherche précédente.
Mon problème est que lorsqu'un utilisateur clique sur un lien vers un enregistrement, puis clique sur le bouton précédent, retour vers les résultats de la recherche.
FireFox (7) garde la page car il a regardé quand je l'ai laissé, en affichant le résultat complet.
IE (7,8) et Chrome (15) de l'autre coté de l'affichage de la page comme elle était avant d'ajouter les résultats de la recherche avec AJAX, comme si elle ne se souvient pas que j'ai ajouté des données.
Ci-dessous le code que j'utilise. J'ai essayé d'ajouter l' location.hash = "test";
, mais il n'a pas l'air de fonctionner.
// Add search result
$("#searchForm").submit(function (event) {
//location.hash = "test";
event.preventDefault();
$.post($(this).attr('action'), $(this).serialize(),
function (data) {
$("tbody").append(data);
});
});
Je n'ai pas besoin d'avoir un bouton qui effectue le suivi des modifications sur la page de recherche, c'est comme marcher à travers chaque résultat de recherche, comme il a été ajouté. Je veux juste le navigateur pour se rappeler le dernier résultat de la recherche quand j'appuie sur le bouton retour.
RÉSOLU
Changer d' document.location.hash = "latest search"
n'a rien changé. J'ai dû utiliser l' localStorage
comme Amir souligné.
Cela va dans le reste de l'jQuery code:
// 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);
}
});