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

时间:2011-08-05 19:31:30

标签: php javascript jquery webforms pagination

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

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

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

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

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

有什么想法吗?

3 个答案:

答案 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 */