[jquery] jquery는 쿠키에 json 데이터 객체를 저장합니다.

쿠키에 JSON 데이터를 저장하려면 어떻게해야합니까?

내 JSON 데이터는 다음과 같습니다.

$("#ArticlesHolder").data('15', {name:'testname', nr:'4',price:'400'});
$("#ArticlesHolder").data('25', {name:'name2', nr:'1', price:'100'});
$("#ArticlesHolder").data('37', {name:'name3', nr:'14', price:'60'});

그리고 나는 다음과 같은 것을하고 싶다.

var dataStore = $.cookie("basket-data", $("#ArticlesHolder").data());

데이터를 검색하는 난에로드 할 $("#ArticlesHolder")같은

$.each($.cookie("basket-data"), function(i,e){
 $("#ArticlesHolder").data(i, e);
});

내가 올바른 길을 가고 있는지 아니면 다른 방식으로해야하는지 아는 사람이 있습니까? 간단히 말해서, 쿠키에서 json 데이터를 어떻게 넣고 가져 오나요?



답변

다음과 같이 데이터를 JSON으로 직렬화 할 수 있습니다.

$.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));

그런 다음 쿠키에서 가져 오려면 :

$("#ArticlesHolder").data(JSON.parse($.cookie("basket-data")));

이전 브라우저 (IE <8)에는 기능 을 가져 오기 위해 json2.js 가 포함 JSON.stringify()되어JSON.parse() 있으므로 이는 데이터 개체 에 의존 하고 직렬화 / 역 직렬화합니다 . 이 예에서는 jQuery 쿠키 플러그인을 사용합니다.JSON


답변

이제 이미 JSON.stringify명시 적으로 사용할 필요가 없습니다 . 이 코드 줄을 실행하십시오.

$.cookie.json = true;

그 후 쿠키에 객체를 저장할 수 있으며, 쿠키를 읽을 때 JSON으로 자동 변환되고 JSON에서 다시 돌아옵니다.

var user = { name: "name", age: 25 }
$.cookie('user', user);
...

var currentUser = $.cookie('user');
alert('User name is ' + currentUser.name);

하지만 JSON 라이브러리에는 jquery.cookie가 포함되어 있지 않으므로 직접 다운로드하여 jquery.cookie.js 앞에 HTML 페이지에 포함시켜야합니다.


답변

사용 JSON.stringify(userData)문자열로 coverty의 JSON 개체에.

var dataStore = $.cookie("basket-data", JSON.stringify($("#ArticlesHolder").data()));

쿠키 사용에서 돌아 가기 위해 JSON.parse()

var data=JSON.parse($.cookie("basket-data"))


답변

반환 된 값을 JSON.stringify(userData)쿠키 에 저장하는 것은 좋지 않습니다 . 일부 브라우저에서 버그가 발생할 수 있습니다.

사용하기 전에 base64 로 변환 (사용 btoa)하고 읽을 때 base64 에서 변환 (사용 atob)해야합니다.

val = JSON.stringify(userData)
val = btoa(val)

write_cookie(val)


답변

데이터를 JSON 및 Base64로 직렬화하면 종속성 jquery.cookie.js :

var putCookieObj = function(key, value) {
    $.cookie(key, btoa(JSON.stringify(value)));
}

var getCookieObj = function (key) {
    var cookie = $.cookie(key);
    if (typeof cookie === "undefined") return null;
    return JSON.parse(atob(cookie));
}

🙂


답변

이것을 시도하십시오 :
https://github.com/tantau-horia/jquery-SuperCookie

빠른 사용법 :

생성-쿠키 생성

확인-존재 여부 확인

확인-JSON 인 경우 쿠키 값 확인

check_index-JSON에 인덱스가 있는지 확인

read_values-쿠키 값을 문자열로 읽습니다.

read_JSON-쿠키 값을 JSON 객체로 읽습니다.

read_value-JSON 객체에 저장된 인덱스 값 읽기

replace_value-JSON 개체에 저장된 지정된 인덱스의 값을 바꿉니다.

remove_value-JSON 객체에 저장된 값 및 인덱스 제거

다음을 사용하십시오.

$.super_cookie().create("name_of_the_cookie",name_field_1:"value1",name_field_2:"value2"});
$.super_cookie().read_json("name_of_the_cookie");


답변