jQuery cookie未在此脚本中设置

时间:2011-05-16 09:21:48

标签: javascript jquery cookies

我正在尝试扩展this script以允许处理多个页面。

我想使用逗号分隔的列表,而不是使用单个时间戳:1305536229613,1305536315210,1305536318026

问题是脚本服务器端正确设置了cookie但js代码不起作用(至少在Opensuse 11.3上的Firefox 3.6.17中)。

我必须在设置时间间隔之前添加$.cookie(cookieName, null)(!)以使cookie = $.cookie(cookieName);在下面2行工作...(我怎么发现它我不知道......)。

此外,更新cookie不起作用:我可以在另一个页面中看到使用服务器脚本cookie一直在增长

$(document).ready(function(){
    var cookieCheckTimer;
    var cookieName = 'download_token';
    var $wait = $('.wait');
    var $waitMsg = $('<span>Processing, please wait...</span>').prepend(
        $('<img />').attr('src', '/img/wait.gif').css({
            'vertical-align': 'middle',
            'margin-right': '1em'
        }));
    //add hidden field to forms with .wait submit
    $wait.parent().each(function(){
        $(this).append($('<input />').attr({
            'type': 'hidden',
            'name': cookieName,
            'id': cookieName
        }));
    });
    $wait.click(function(){
        var token = String(new Date().getTime());
        //set token value
        $('#' + cookieName).val(token);
        //hide submit buttons
        $(':submit').hide();
        //append wait msg
        $(this).after($waitMsg);
        //why?? don't know...
        $.cookie(cookieName, null) //<<<<<<<<<<
        //set interval
        cookieCheckTimer = window.setInterval(function(){
            var cookie = $.cookie(cookieName);
            if (cookie != null){
                cookie = cookie.split(',');
                var idx = cookie.indexOf(token);
                if (idx >= 0){
                    //detach wait msg
                    $waitMsg.detach();
                    //show again submit buttons
                    $(':submit').show();
                    //remove token
                    cookie.splice(idx, 1);
                    //clear timer
                    window.clearInterval(cookieCheckTimer);
                    //update cookie value
                    if (cookie) $.cookie(cookieName, cookie.join(','));
                    else $.cookie(cookieName, null);
                }
            }
        }, 1000);
    });
});

我正在使用存储库中的latest version of the jquery.cookie plugin

0 个答案:

没有答案