2014-01-14 45 views
1

給定一個對象:如何存儲JS對象中的cookie

var object = { 
     "key1" : Math.random()*10000000000000000, 
     "key2" : "value", 
     "key3" : "value", 
    } 

我怎麼可以存儲在瀏覽器中的cookie,當有人填寫與相應值的形式?當用戶回到頁面填寫表單時,值應該填充cookie中的表單。

+4

'JSON.stringify()'/'JSON.parse()' –

+0

[純JavaScript的可能重複 - 存儲對象在cookie中](http://stackoverflow.com/questions/11344531/p URE-JavaScript的商店對象中的cookie的) –

+0

和[可我們分配對象爲在JavaScript中的cookie?](http://stackoverflow.com/q/1276238/218196) –

回答

-1
var saveButton=document.getElementById("save"); 
var username=document.getElementById("Name"); 
var email=document.getElementById("Email"); 
var gender=document.getElementById("Gender"); 
function setCookie(value, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
    var expires = "expires="+d.toUTCString(); 
    document.cookie = "Username"+ "=" + value + "; " + expires; 
    if(document.cookie) 
     return true; 
} 
function objToString (obj) { 
    var str = ''; 
    for (var p in obj) { 
     if (obj.hasOwnProperty(p)) { 
      str += p + '::' + obj[p] + '\n'; 
     } 
    } 
    return str; 
} 
saveButton.onclick=function() { 
    // body... 
    var object={name : username.value, email : email.value, gender : gender.value}; 
    var stringObj=objToString(object); 
    alert(stringObj); 
    if(setCookie(stringObj,1)) 
     alert("cookie set"); 
}; 
+1

方式複雜,一個簡單的任務,認爲你可能混淆了,而不是幫助..是所有需要一個JSON字符串OP ... – Mayhem

+0

我只是不喜歡JSON –

+0

抱歉,不得不投下來,我看到幾個這裏的問題,首先上面的代碼不能直接運行蝙蝠..你需要刪除換行符。其次,在名稱/電子郵件或任何字符串的情況下..這將不容易轉換回對象,而不使用正則表達式類型表達式..此外,如果我只是簡單地將::添加到一個字符串,這將中斷腳本更多..我只評論這一點,因爲谷歌尋求答案的人應該有最好的方向來節省時間。 – Mayhem

0

擴展已經給(註釋和定製JS方法)的答案......我想這個地方在工作示例...所以這裏去...

首先,使用JSON允許您可以輕鬆地一個對象轉換爲從JSON,而無需使用你自己的方法。它是最常見的方式和人們熟知的標準,這些天。所以大多數語言都有JSON支持..

擴展通過subas提供的例子德蘭 ...

var object={name : username.value, email : email.value, gender : gender.value}; 
var stringObj=JSON.stringify(object); 

這裏看到http://jsfiddle.net/LLujbb2h/使得其易於使用的,如果你想處理字符串/數組和對象。你只需把它的主要對象和它所有的工作適合你你不侷限於...那麼爲什麼重新發明輪子?

使用這裏顯示的非JSON方法http://jsfiddle.net/1bf4dg8o/有很多問題,例如一旦從cookie中讀取對象就處理對象..它只是一個字符串......如果說例如你把::放在你的姓名/電子郵件/性別..這會打破自定義語法...我會不惜一切代價避免這種方法!

簡單,測試我創建了第一小提琴,你會看到它的很多容易對付......

還用巡視在瀏覽器中查看cookie的,因爲這將與調試幫助。 。

編輯 - 顯示如何讀回Cookie成JS對象 http://jsfiddle.net/LLujbb2h/2/