【问题标题】:Jquery cookie undefined on the line after setting it?jquery cookie undefined 设置后就行了?
【发布时间】:2015-10-23 07:01:56
【问题描述】:

大家早上好,我刚刚熟悉 jquery cookie,但我似乎无法找出为什么设置后 cookie 未定义。

基本上,我正在尝试在 cookie 中使用 jquery ui 中的 sortable 存储排序顺序,但在设置 cookie 后它仍然显示未定义。我将在下面展示 jquery,如果你们需要查看更多内容(html 和其他内容,我也可以更新以包含它)。

首先,请注意,在可排序的更新功能中,如果我在设置 cookie 之前放置 alert(cooked),它应该会以 item1、item2、item3、item4、item5 发出警报,所以它不像什么它试图设置一个带有空值的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]));
        }
    }
}

再次感谢您的帮助!

【问题讨论】:

  • 做更多研究,我没有完全理解,但看起来jquery cookie不再使用了? JS-Cookie 是什么?我什至尝试下载 JS-Cookie,切换引用并使用 Cookies.set() 和 Cookies.get(),但这也没有用。

标签: jquery jquery-ui jquery-cookie


【解决方案1】:

如果其他人也有同样的问题,那是谷歌浏览器的问题。我在 Firefox 和 IE 中尝试过,cookie 工作正常。

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

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

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

【讨论】:

    猜你喜欢
    • 2012-08-26
    • 2022-08-17
    • 2018-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多