存储表单输入数据而不发布表单

时间:2015-10-22 07:44:52

标签: javascript html ajax forms

我想知道,我们有这个由第三方提供的前端。他们在PHP网站上实现了这个设计(基于Symphony,与我的问题无关)。

问题是,他们使用了大量的Javascript,这对于动态部分来说很不错。但是,在提交表单时,数据也通过jQuery $ .ajax传输或发布。这意味着客户端将永远不会存储用户的输入以供将来使用,这实际上是他们想要的东西,因为这个前端设计为可以在x周或每月重复使用。

任何人都知道是否有办法让表单表现得像是在发布?

另外,用户未登录,并且可能有多个用户,尽管它可能是他的私人系统,或在家中共享。很有可能它甚至会成为移动设备。

1 个答案:

答案 0 :(得分:0)

您需要使用Cookie来保存表单数据,最好在提交后使用。在处理这样的事情时,我喜欢使用jquery.cookie。我会做这样的事情。这只适用于单个浏览器。

$( document ).ready(function() {

    // Fetch the submit_form_input cookie that was set after submitting the form
    var submit_form_input =  JSON.parse($.cookie("submit_form_input"));

    //  Loop through the values inside the cookie
    for (i = 0; i < submit_form_input.length; i++) { 

        // Find the form with the correct id and set the value on it
        $("#" + submit_form_input[i].name).val(submit_form_input[i].value);
    }

    $("#submit_form").submit(function(ev) {

        ev.preventDefault();

        var url = $(this).attr('action'); 
        var data = JSON.stringify($(this).serializeArray());

        $.ajax({
               type: "POST",
               url: url,
               data: $(this).serialize(), // serializes the form's elements.
               success: function(response)
               {
                   // Set the cookie
                   $.cookie("submit_form_input", data);

                   alert('Thank you for submitting the form.'); 
               }
        });
    });
});

这是JSFiddle