在我不断努力理解哈希标签和页面导航的过程中,如果用户使用浏览器导航按钮(例如后退和前进),我就会重新提交表单数据。
我使用表单数据的函数如下:
if(page == "/visits_results") {
$('#start').val(start);
$.post("visits_results.php", $("#profile_form_id").serialize(),
function(data) {
$('#search_results').html(data);
location.href = "#visits_results=" + start;
});
}
如果表单仍然可见,这可以正常工作,例如,如果我使用分页,它会像我期望的那样执行。
我的问题是当用户点击浏览器后退按钮(表单现已被删除)然后他们点击浏览器前进按钮。事件被触发但我的序列化表单数据现在为空。有没有办法缓存表单数据,以便我可以继续调用它?
有什么想法吗?
答案 0 :(得分:2)
您最好的选择(我认为)是将序列化数据存储在Cookie中。当用户返回他/她已填写的页面时,从cookie中检索数据,对其进行反序列化,然后将其放回原来的位置。
使用Cookie非常简单,有一个体面的跨浏览器实现,用于在quirksmode上读/写cookie:
或者如果您更喜欢使用插件:
答案 1 :(得分:1)
您可以使用localStorage
等http://jsfiddle.net/zDPjm/轻松保存数据答案 2 :(得分:0)
嗯,当然,你可以做一些非常简单的事情,例如:
if ($("#profile_form_id").serialize() != "") serializedFormData = $("#profile_form_id").serialize();
$.post("visits_results.php", serializedFormData, /* Rest of Code */