如何记住最后的阿贾克斯状态当点击返回浏览
问题描述:
我有类别浏览页面最初显示48个产品,并在客户点击下一个按钮后,它触发ajax调用加载下48个产品,所以然后该页面有96个产品和该网址保持不变。然后,客户从页面上点击一个产品,进入产品页面,然后点击浏览返回到浏览页面,页面正在重新加载,并显示24个产品。如何记住最后的阿贾克斯状态当点击返回浏览
所以我的问题是如何保持最后的ajax状态,所以当客户点击时,他们仍然会看到48个结果。
我看到LLBean可以做到,但想知道如何实现这一点? http://www.llbean.com/llb/shop/509723?nav=ln-26&page=active-clothing
谢谢!
答
是的,你可以用客户端的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);
当你说“所以当客户点击”时,你是否认为他们使用嵌入在浏览器中的后退按钮?或者在您的产品页面上定制“后退”按钮? – 2013-04-05 20:03:42
嵌入在浏览器中的后退按钮。谢谢! – 2013-04-06 00:34:49
单击后退按钮可将URL更改为以前访问过的URL。如果您使用AJAX动态更改内容,则可能会遇到问题。请将您的下一个按钮导航到新网址或实现页面内的后退按钮。 – 2013-04-06 04:14:57