2012-01-27 45 views
19

Tôi có một danh sách các đối tượng javascript:

var people = [ 
    { 'name' : 'Abel', 'age' : 1 }, 
    { 'name' : 'Bella', 'age' : 2 }, 
    { 'name' : 'Chad', 'age' : 3 }, 
] 

Tôi cố gắng để lưu trữ chúng trong một cookie trình duyệt với jQuery $ .cookie():

$.cookie("people", people); 

sau đó tôi lấy cookie này và sau đó cố gắng đẩy một đối tượng khác vào nó:

var people = $.cookie("people"); 
people.push(
    { 'name' : 'Daniel', 'age' : 4 } 
); 

Tuy nhiên, điều này không hiệu quả; Tôi đã phân tích mã này trong Firebug và Console lưu ý rằng people là một chuỗi ("[object Object],[object Object],[object Object]") và chức năng đẩy không tồn tại.

Điều gì đang xảy ra? Cách thích hợp để lưu trữ và truy xuất danh sách các đối tượng là gì?

+13

bạn nên thay đổi tên var của 'people' thành' babies' :) – ajax333221

+0

$ .cookie ("people", $ .param (people)); Điều này làm việc hoàn hảo với tôi – Nejthe

Trả lời

32

Cookie chỉ có thể lưu trữ chuỗi. Vì vậy, bạn cần chuyển đổi mảng đối tượng của bạn thành chuỗi JSON. Nếu bạn có thư viện JSON, bạn có thể chỉ cần sử dụng JSON.stringify(people) và lưu trữ trong cookie, sau đó sử dụng $.parseJSON(people) để hủy xâu chuỗi.

Cuối cùng, mã của bạn sẽ trông như thế:

var people = [ 
    { 'name' : 'Abel', 'age' : 1 }, 
    { 'name' : 'Bella', 'age' : 2 }, 
    { 'name' : 'Chad', 'age' : 3 }, 
]; 
$.cookie("people", JSON.stringify(people)); 
// later on... 
var people = $.parseJSON($.cookie("people")); 
people.push(
    { 'name' : 'Daniel', 'age' : 4 } 
); 
$.cookie("people", JSON.stringify(people)); 
+0

Cảm ơn bạn, thư viện JSON là gì? – dangerChihuahua007

+1

https://github.com/douglascrockford/JSON-js/blob/master/json2.js –

+0

tìm thấy điều này rất hữu ích nhưng điều này var người = $ .parseJSON ($. Cookie ("người");) nên được var này people = $ .parseJSON ($. cookie ("người")); ";" đã hết chỗ. – ARWVISIONS

5

Tôi đã cố gắng ngày hôm nay và không thể có được nó để làm việc. Sau đó tôi phát hiện ra rằng đó là vì tôi có 3 vật rất lớn mà tôi đã cố gắng để lưu trong một cookie.

Cách tôi làm việc arround này là bằng cách lưu trữ thông tin trong bộ nhớ cục bộ của trình duyệt.

dụ:

localStorage.setItem("test2", JSON.stringify(obj)) 

localStorage.getItem("test2") 

biết thêm thông tin về lưu trữ địa phương: cookies vs local storage

4 giờ thời gian của tôi trút vào đó, không mắc phải sai lầm tương tự.

Các vấn đề liên quan