0

我有一个 joomla 网站,我正在使用 rsform 组件创建一个多页表单。在提交表单之前,我将所有输入字段值保存在 cookie 中,以防用户决定他们无法完成填写表单。因此,如果用户返回,我有一个函数将获取 cookie 并遍历表单并使用存储在 cookie 中的值填充表单字段。我可以创建和读取 cookie,但无法重新填充表单。这是流程。

  1. 用户访问网站,网站检查他们是否在机器上存储了 cookie,如果没有创建。
  2. 当用户单击按钮转到下一个表单视图时,cookie 会被填充,当时我采用表单并从中创建一个 json 字符串化序列化数组并将其传递给要存储的 cookie。

但我注意到,直到我大约三个表单视图深度时,cookie 才会填充值。例如,如果我填写前两个文本区域并单击下一步按钮进入下一个表单视图,在控制台中我会看到 cookie 密钥对,但值是空的。但是,如果我填写下一个 textarea 并单击下一个按钮,我可以在控制台中看到前两个 textarea 的值,但看不到我刚刚填写的 textarea。我希望你们能明白我想说什么。我已经在这几个星期了,我无法弄清楚,所以非常感谢任何帮助。这是http://hearwithyourheartusa.com/index.php/share-your-story表单的链接。可能更容易看到我想说什么,而不是试图理解我刚刚输入的内容。

编辑 这是我用来设置和获取 cookie 的代码以及应该使用 ccokie 的值填充表单的代码。我也有一个 jsfiddle,但它拒绝设置 cookie,但如果你想试一试,这里是链接http://jsfiddle.net/Uqj4x/

function createCookie(name,value,days) {
    var expires = "";
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(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 string2form($form, serializedStr) {
    var fields = JSON.parse(serializedStr);
    for (var i = 0; i < fields.length; i++) {
        var controlName = fields[i].name;
        var controlValue = fields[i].value;     
        $form.find("[name='+ controlName +']").attr('value',controlValue);
        //document.getElementsByName(controlName).value = controlValue;
        //console.log('field name='+controlName+' field value='+controlValue);
    }
        console.log('form values are - '+JSON.stringify(jQuery('#userForm').serializeArray()));
        var cookie = readCookie('storyCookie');
        console.log('the cookie values are '+cookie);
}
      jQuery('#userForm input:button').click(function() {
    // jQuery.ajax({
        // cache: false,
        // type: 'POST',
        // url: 'http://hearwithyourheartusa.com/templates/jsn_boot_pro/customPHP/ajaxcookie.php',
        // data: JSON.stringify(jQuery('#userForm').serializeArray()),
        // contentType:"application/json; charset=utf-8",
        // dataType: 'json',
        // success: function(data){
            // alert(data);
        // }
    // });
    console.log(id);
    createCookie('storyCookie',JSON.stringify(jQuery('#userForm').serializeArray()),365);
    var cookie = readCookie('storyCookie');
    console.log('the cookie is '+cookie);
});
4

1 回答 1

0

我尝试填写表格,但没有设置任何 cookie。我也找不到保存 cookie 的代码(它应该在 rsfp_changePage 中,对吗?)

无论如何,您是否在将来设置了cookie过期时间?

于 2013-04-26T07:56:44.963 回答