如何记住最后的阿贾克斯状态当点击返回浏览

如何记住最后的阿贾克斯状态当点击返回浏览

问题描述:

我有类别浏览页面最初显示48个产品,并在客户点击下一个按钮后,它触发ajax调用加载下48个产品,所以然后该页面有96个产品和该网址保持不变。然后,客户从页面上点击一个产品,进入产品页面,然后点击浏览返回到浏览页面,页面正在重新加载,并显示24个产品。如何记住最后的阿贾克斯状态当点击返回浏览

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

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

谢谢!

+0

当你说“所以当客户点击”时,你是否认为他们使用嵌入在浏览器中的后退按钮?或者在您的产品页面上定制“后退”按钮? – 2013-04-05 20:03:42

+0

嵌入在浏览器中的后退按钮。谢谢! – 2013-04-06 00:34:49

+0

单击后退按钮可将URL更改为以前访问过的URL。如果您使用AJAX动态更改内容,则可能会遇到问题。请将您的下一个按钮导航到新网址或实现页面内的后退按钮。 – 2013-04-06 04:14:57

是的,你可以用客户端的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);