Jquery cookie未定义后的行设置它



大家早上好,我刚刚开始熟悉jquery cookie,但是我似乎不知道为什么cookie设置后是未定义的

基本上,我试图在cookie中使用jquery ui中的sortable存储排序顺序,但在设置cookie后,它仍然说未定义。我将在下面展示jquery,如果你们需要看到更多(html和什么不,我可以更新,包括它)。

首先,只是要注意,在sortable的更新函数中,如果我在设置cookie之前放入alert(cooked),它会发出item1,item2,item3,item4,item5的警报,所以它不像它试图设置一个null值的cookie(无论这会不会导致问题)。设置完cookie后,我警告刚刚设置的cookie,结果是未定义的。如果有人有任何想法,将会发生什么,那将是伟大的!

$(document).ready(function() {
    restoreOrder();
    var parentHeight = $(".item").parent(".row").height();
    $(".item").height(parentHeight);
    $(".productsContainer").sortable({
        items: '> .row > .item',
        update: function(event, ui) {
            var cooked = [];
            $(".productsContainer").each(function(index, domEle) { cooked[index] = $(domEle).sortable('toArray'); });
            $.cookie('products', cooked.join('|'));
            alert($.cookie('products'));
        }
    });
    $(".productsContainer").disableSelection();
    $(".item").click(function() {
        $(this).children(".item-box").children("p").toggle();
    });
    $(".close").click(function() {
        var parent = $(this).parent();
        var parentId = parent.attr("id");
        var $old = $(this).siblings(".item-box").children("img");
        var $newImg = $old.clone();
        $newImg.addClass("deletedImage")
        $(".deleteContainer").append($newImg);
        var newOffset = $newImg.offset();
        var oldOffset = $old.offset();
        var $temp = $newImg.clone();
        $("body").append($temp);
        $temp.css('position', 'absolute').css('left', oldOffset.left).css('top', oldOffset.top).css('zIndex', 1000);
        $newImg.hide();
        parent.hide();
        $temp.animate( {'top': newOffset.top, 'left':newOffset.left}, 'slow', function(){
            $newImg.show();
            $old.remove();
            $temp.remove();
        });
    });
})
function restoreOrder() {
    var cookie = $.cookie('products');
    alert(cookie);
    if (!cookie) return;
    var SavedID = cookie.split('|');
    for ( var u=0, ul=SavedID.length; u < ul; u++ ){ alert(SavedID[u]); SavedID[u] = SavedID[u].split(',');}
    for (var Scolumn=0, n = SavedID.length; Scolumn < n; Scolumn++) {
        for (var Sitem=0, m = SavedID[Scolumn].length; Sitem < m; Sitem++) {
            $("#sortable").eq(Scolumn).append($("#sortable").children("#" + SavedID[Scolumn][Sitem]));
        }
    }
}

再次感谢您的帮助!

如果其他人有同样的问题,这是谷歌浏览器的问题。我在firefox和IE中尝试了一下,cookie工作得很好。

chrome似乎在本地文件(如file:///)上禁用cookie。我看到的几个解决方案如下:

1)使用本地IP 127.0.0.1或localhost(没有尝试)。

2)使用命令行参数——enable-file-cookies (
)

最新更新