小编典典

回击按钮时记住ajax添加的数据

ajax

我有一个搜索页面,其中每个搜索结果都通过AJAX添加到页面中。这样,我可以让用户搜索 Led Zeppelin ,然后再次搜索 Metallica,
但将其添加到与上一次搜索相同的结果列表中。

我的问题是,当用户单击指向记录的链接,然后单击“后退”按钮,回到搜索结果时。
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"没有任何改变。我不得不使用localStorageAmir指出的。

这涉及到其余的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);
    }
});

阅读 236

收藏
2020-07-26

共1个答案

小编典典

您有几种选择。

  1. 使用localstorage记住上一个查询
  2. 使用Cookie(但不要)
  3. 尝试使用哈希值document.location.hash = "last search"来更新URL。您将再次查看哈希,如果已将其设置,则执行另一个ajax来填充数据。如果您已完成本地存储,则可以仅缓存上一个ajax请求。

我会使用localstorage和散列解决方案,因为这是某些网站所做的。您还可以复制和粘贴URL,它将仅加载相同的查询。这很好,我会说很方便。

我很想知道为什么它不起作用。更新您的答案,以便我们提供帮助。

2020-07-26