点击按钮后我的cookie重置

时间:2013-04-25 14:41:05

标签: jquery cookies joomla

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

  1. 用户访问网站和网站,检查他们是否在计算机上存储了cookie,如果没有创建的话。
  2. 当用户点击按钮转到下一个表单视图时,cookie会被填充,当时我将获取表单并从中创建一个json stringify序列化数组并将其传递给cookie进行存储。
  3. 但是我注意到,在我深入了解三个表单视图之前,cookie没有填充值。例如,如果我填写前两个textareas并单击下一个按钮以转到下一个表单视图,在控制台中我会看到cookie密钥对,但值为空。但是如果我填写下一个textarea并单击下一个按钮,我可以看到控制台中前两个textareas的值,但不是我刚刚填写的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);
    });
    

1 个答案:

答案 0 :(得分:0)

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

无论如何,您是否在未来设置了Cookie到期时间?