簡體   English   中英

保存為cookie時,JSON編碼數組轉換為字符串

[英]JSON encoded array converted to string when saved as cookie

我有一個簡單的數組,我正在嘗試JSON編碼並設置為cookie。 我使用json2.js腳本編碼為JSON。 我使用以下代碼來設置cookie:

jQuery(document).ready(function(){
    var ids = ['1', '2'];
    JSON.stringify(ids);
    setCookie(cookieName, ids, 1);
});

function setCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

將數組轉換為JSON並將其記錄在控制台中后,我得到:

["1", "2"]

這是我所期待的。 然后我用以下函數讀出cookie

function getCookie(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;
}

當我讀出cookie並將其記錄在控制台中時,我得到:

1,2

建議它是一個字符串,不再是JSON編碼對象。 我希望能夠將cookie設置為JSON編碼對象,將其讀出並解析JSON對象,最后對數據執行操作。 因此,我的問題是,如何將這樣的JSON編碼對象發送到cookie,以便在我讀出它時將其解析為JSON?

一如既往地謝謝!

改變這個:

JSON.stringify(ids);
setCookie(cookieName, ids, 1);

對此:

var str = JSON.stringify(ids);
setCookie(cookieName, str, 1);

我沒有看到你實際使用JSON字符串化的結果:

jQuery(document).ready(function(){
    var ids = ['1', '2'];
    setCookie(cookieName, JSON.stringify(ids), 1);
});

試試這個

不要使用這些cookie功能,它們是有缺陷的。 setCookie無法正確編碼名稱和值,並且getCookie對於具有公共后綴的cookie失敗(請參閱我對Javascript getCookie函數的回答 )。

對於setCookie我會使用這個:

function setCookie(name, value, days) {
    var expires = "";
    if (days > 0) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        expires = "; expires="+date.toGMTString();
    }
    document.cookie = encodeURIComponent(name)+"="+encodeURIComponent(value)+expires+"; path=/";
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM