Создать массив в cookie с помощью javascript

В дополнение к тому, что сказанный izb, HashMap позволяет нулевым значениям, тогда как эти Hashtable не делает.

Также примечание, которое Hashtable расширяется Dictionary класс, который как состояние Javadocs, является устаревшим и было заменено эти Map интерфейс.

22
задан rink.attendant.6 27 August 2013 в 12:39
поделиться

5 ответов

Как вы можете прочитать в этой теме :

Вы комбинируете использование плагина jQuery.cookie и JSON и решаете свою проблему.

Когда вы хотите сохранить массив, вы создаете массив в JS и используете JSON.stringify, чтобы преобразовать его в строку и сохранить с $.cookie('name', 'array_string')

var myAry = [1, 2, 3];
$.cookie('name', JSON.stringify(myAry));

Когда вы хотите Извлеките массив из cookie, вы используете $.cookie('name') для получения значения cookie и JSON.parse для извлечения массива из строки.

var storedAry = JSON.parse($.cookie('name'));
//storedAry -> [1, 2, 3]
48
ответ дан 29 November 2019 в 03:47
поделиться

Печенье может содержать только строки. Если вы хотите смоделировать массив, вам нужно его сериализовать и десериализовать.

Вы можете сделать это с помощью библиотеки JSON .

8
ответ дан 29 November 2019 в 03:47
поделиться

Создать массив в cookie, используя jQUery?

var list = new cookieList("test"); $(img).one('click', function(i){ while($('.selected').length < 3) {
    $(this).parent()
        .addClass("selected")
        .append(setup.config.overlay);

    //$.cookie(setup.config.COOKIE_NAME, d, setup.config.OPTS);
    var index = $(this).parent().index();

    // suppose this array go into cookies.. but failed
    list.add( index );

    var count = 'You have selected : <span>' + $('.selected').length + '</span> deals';
    if( $('.total').length ){
        $('.total').html(count);
    }

}  });
1
ответ дан 29 November 2019 в 03:47
поделиться

Для этого примера вы можете сделать это довольно легко:

  • Сделать Cookies:

    ///W3Schools Cookie Code:
    function setCookie(cname,cvalue,exdays) {
        var d = new Date();
        d.setTime(d.getTime() + (exdays*24*60*60*1000));
        var expires = "expires=" + d.toGMTString();
        document.cookie = cname + "=" + cvalue + ";" + expires + ";";
    }
    
    function getCookie(cname) {
        var name = cname + "=";
        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);
            }
            if (c.indexOf(name) == 0) {
                return c.substring(name.length, c.length);
            }
        }
        return "";
    }
    
    ///My Own Code:
    for(a=0;a<b.length;a++){
        setCookie(b[a],b[a],periodoftime);
    }
    
  • Получить массив:

    for(a=0;a<b.length;a++){
        b[a] = getCookie(b[a])
    }
    

Для любого массива с другими типами значений, кроме строк:

  • Make Cookies:

    ///Replace MyCode above With:
    if(typeof b[a] === 'string'){
        setCookie(b[a],b[a],periodoftime);
    }else{
        setCookie(b[a].toString,b[a],periodoftime);
    }
    
  • Получить массив:

    for(a=0;a<b.length;a++){
        if(typeof b[a] === 'string'){
            b[a] = getCookie(b[a])
        }else{
            b[a] = getCookie(b[a].toString)
        }
    }
    

Единственный недостаток в том, что идентичные значения не могут быть получены.

JQuery не требуется, разделение запятыми или JSON.

0
ответ дан 29 November 2019 в 03:47
поделиться

Я согласен с другими комментариями - вы не должны делать это, и вы должны использовать JSON. Однако, чтобы ответить на ваш вопрос, вы можете взломать его, сохранив массив в виде строки с разделителями-запятыми. Допустим, вы хотите сохранить следующий массив Javascript в cookie:

var a = ['peter','esther','john'];

Вы можете определить строку cookie, а затем выполнить итерацию по массиву:

// Create a timestamp in the future for the cookie so it is valid
var nowPreserve = new Date();
var oneYear = 365*24*60*60*1000; // one year in milliseconds
var thenPreserve = nowPreserve.getTime() + oneYear;
nowPreserve.setTime(thenPreserve);
var expireTime = nowPreserve.toUTCString();

// Define the cookie id and default string
var cookieId = 'arrayCookie';
var cookieStr = '';

// Loop over the array
for(var i=0;i<a.length;i++) {
    cookieStr += a[i]+',';
}

// Remove the last comma from the final string
cookieStr = cookieStr.substr(0,cookieStr.length-1);

// Now add the cookie
document.cookie = cookieId+'='+cookieStr+';expires='+expireTime+';domain='+document.domain;

В этом примере вы бы сохранили следующий файл cookie (если ваш домен www.example.com):

arrayCookie=peter,ester,john;expires=1365094617464;domain=www.example.com
1
ответ дан 29 November 2019 в 03:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: