簡體   English   中英

我想將 Javascript 數組存儲為 Cookie

[英]I want to store Javascript array as a Cookie

是否可能,我有某種列表,我想將其存儲在瀏覽器中,如果不可能,那么有效的方法是什么?

JSON對其進行編碼,有效地生成一個字符串,如"{name:'myname',age:'myage'}" ,您將其放入cookie中,在需要時檢索並解碼回JavaScript數組/對象。

示例 - 將數組存儲在cookie中:

var arr = ['foo', 'bar', 'baz'];
var json_str = JSON.stringify(arr);
createCookie('mycookie', json_str);

稍后,將cookie的內容檢索為數組:

var json_str = getCookie('mycookie');
var arr = JSON.parse(json_str);

注意: cookie函數不是本機的,取自如何從cookie創建和讀取值?

一種快速方法是使用適當的分隔符join()到一個字符串中:

var a = [1, 2, 3, 4];
a.join('|');  // Returns: "1|2|3|4"

然后只需使用字符串split()方法從cookie字符串中返回數組。

對於數組中的每個值id,請嘗試以下方法將值保存在cookie數組中:

<script type="text/javascript">

/**
 * set cookie
 */
function set_cookie(cookiename, cookievalue, hours) {
    var date = new Date();
    date.setTime(date.getTime() + Number(hours) * 3600 * 1000);
    document.cookie = cookiename + "=" + cookievalue + "; path=/;expires = " + date.toGMTString();

}

set_cookie('item['+id+']', id, 24*365*10); // 10 years

</script>

你可以在php中檢索這個數組:

<?php
foreach($_COOKIE['item'] as $e){
echo $e,'<br />';
}
?>

假設購物車是我們可以設置的數組

document.cookie = 'cart='+ JSON.stringify(cart) 

然后,你必須創建一個 function 來讀取cookie

function getCookie(cookieName) {
    var name = cookieName + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i].trim();
        if ((c.indexOf(name)) == 0) {
            return c.substr(name.length);
        }
    }
}

然后你可以得到cookie

cart = JSON.parse(getCookie('cart'))

暫無
暫無

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

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