如何在浏览中单击返回时记住上次ajax状态

时间:2013-04-05 20:00:18

标签: ajax

我有类别浏览页面最初显示48个产品,并且在客户点击下一个按钮后,它会触发ajax调用以加载下一个48个产品,因此页面有96个产品,并且网址保持不变。然后,客户从页面中单击一个产品,然后转到产品页面,然后在浏览中单击返回浏览页面,页面将重新加载,并显示24个产品。

所以我的问题是如何保持最后的ajax状态,所以当客户点击回来时,他们仍会看到48个结果。

我看到LLBean可以做到,但想知道如何实现它? http://www.llbean.com/llb/shop/509723?nav=ln-26&page=active-clothing

谢谢!

1 个答案:

答案 0 :(得分:0)

是的,您可以使用客户端的cookie存储或服务器端的会话数据来执行此操作。我想我会推荐cookie存储,因为这是非常基本的不敏感数据。

您可以使用以下代码来编写,读取和删除cookie数据:

function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    } else var expires = "";
    document.cookie = escape(name) + "=" + escape(value) + expires + "; path=/";
}

function readCookie(name) {
    var nameEQ = escape(name) + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1, c.length);
        if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length, c.length));
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

例如,您可以设置名为numResults的Cookie来存储客户端浏览的结果数量:

var data = readCookie("numResults");
if (data != null && data != "") {
    //in this case, you have your data, load this many results
} else {
    createCookie("numResults", 48, 30); //create the cookie, if it doesn't already exist
}

当您进行ajax调用以增加结果编号时,只需添加:

createCookie("numResults", newNumber, 30);