假设我有2页, 第一页由表单组成,在提交后,我想在同一页面内加载一个新页面(oldpage.html)
$("body").load("newpage.html");
问题是,当我尝试刷新页面时,它会返回到oldpage.html内容
我的问题是,即使刷新后如何维护新加载的页面。
答案 0 :(得分:0)
使用cookie来保存页面名称以进行加载:
function write_Cookie(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 = name + "=" + value + expires + "; path=/";
}
function read_Cookie(name) {
var nameEQ = 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 c.substring(nameEQ.length, c.length);
}
return null;
}
function clear_Cookie(name) {
write_Cookie(name, "", -1);
}
var page_for_load=read_Cookie('current_page');
if(!page_for_load){
page_for_load='oldpage.html';
write_Cookie('current_page', page_for_load, 1);
}
$('body').load(page_for_load, function(responseTxt, statusTxt, xhr){
if(statusTxt == "success"){
page_for_load='newpage.html';
write_Cookie('current_page', page_for_load, 1);
}
});
答案 1 :(得分:0)
由于您要更改整个正文,因此您应该在提交表单后重定向到新页面。 我建议在POST提交表单后,服务器将客户端重定向到新页面或返回到表单。使用http代码&#34; 303见其他&#34;。这是在服务器处理POST请求后使用适当的GET方法将用户重定向到新资源的最佳方法。
答案 2 :(得分:0)
您确实可以使用 Cookie 。但是,为简单起见,它更容易使用sessionStorage
对象。
注意强>:
有两个存储对象
所以你可以做的是检查sessionStorage
。
例如:
/**
* This translates into
*
* if(sessionStorage.getItem("page")) {
* var page = sessionStorage.getItem("page");
* } else {
* var page = "oldpage.html";
* }
*/
var page = (sessionStorage.getItem("page") ? sessionStorage.getItem("page") : "oldpage.html";
// Load the correct view based on the above statement
$("body").load(page);
发布page
时,不要忘记更新form
。只有在使用AJAX
之类的库时才能执行此操作。如果是服务器端,那么cookie
会更好。
update使用sessionStorage
对象。
sessionStorage.setItem("page", "newpage.html");