繁体   English   中英

我可以保存序列化表格数据吗?

[英]Can I save serialized form data?

在我继续努力理解哈希标签和页面导航的过程中,如果用户使用浏览器的导航按钮(例如,后退和前进),我将遇到重新提交表单数据的障碍。

我使用表单数据的函数如下:

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; 
    });
}

如果表单仍然可见,则可以正常工作,例如,如果我使用分页,它将按我期望的那样执行。

我的问题是,当用户单击浏览器的后退按钮(该表单现已被删除),然后他们单击浏览器的前进按钮时。 事件被触发,但是我的序列化表格数据现在为空。 有什么方法可以缓存表单数据,以便我可以继续调用它?

有什么想法吗?

最好的选择(我认为)是将序列化数据存储在cookie中。 当用户返回到他/她已经填写的页面时,请从cookie中检索数据,对其进行反序列化,然后将其放回其所属位置。

Cookies是相当琐碎的,有一个不错的跨浏览器实现,可以在quirksmode上读/写cookie:

或者,如果您想使用插件:

您可以使用http://jsfiddle.net/zDPjm/等 localStorage轻松保存数据

好吧,当然,您可以做一些非常简单的事情,例如:

if ($("#profile_form_id").serialize() != "") serializedFormData = $("#profile_form_id").serialize();
$.post("visits_results.php", serializedFormData, /* Rest of Code */

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM