본문 바로가기

IT/JavaScript

Javascript 페이지에서 데이터교환

여러 페이지 사이에 데이터 교환하는 문제

브라우저 위에서 실행되는 자바스크립트는 기본적으로 페이지에 종속돼 있다. 한 페이지에서 다른 페이지로 전환하면 메모리상의 자바스크립트 개체들은 사라져 버린다.

웹킷을 이용한 프로젝트처럼 여러 페이지 사이에 데이터를 교환해야 할 때는 어떻게 하면 좋을까?

sqlite3이나 파일을 이용해도 되고, 믿을만한 RDBMS를 이용할 수도 있을 것이다. 하지만 목적에 비해 너무 번거롭거나 무거운 감이 있다.

찾아보니 HTML5에서 지원되는 훨씬 편리한 방법이 있었다. 바로 sessionStorage를 이용하는 것이다.

sessionStorage

sessionStorage를 이용하면 한 세션 안에서 여러 페이지에 걸쳐 데이터를 저장하고 읽을 수 있다. 사용법도 매우 간단하다. 그냥 sessionStorage 객체의 원하는 필드명에 데이터를 넣고 쓰면 된다.

이렇게 쓰고,

sessionStorage.foo = 'bar';

이렇게 로드한다.

sessionStorage.foo;

JSON과 함께 쓰기

단, 위의 방법으로는 무조건 문자열만 쓰고 읽을 수 있다. 저기에다 자바스크립트 개체를 넣으면 강제로toString이 호출돼 원하는 결과가 되지 않을 것이므로 주의해야 한다. 특히 truefalse012등 문자열이 아닌 리터럴들을 쓸 때 주의해야 한다.

문자열이든 다른 개체든 JSON 파서를 같이 이용해서 쓰는게 좋다. 간단하다.

이렇게 자바스크립트 개체를 저장하고,

sessionStorage.foo = JSON.stringify({bar: [1, 2, 3, 4, 5], baz: ['a', 'b', 'c', 'd']});

이렇게 자바스크립트 개체를 로드한다.

JSON.parse(sessionStorage.foo);


'IT > JavaScript' 카테고리의 다른 글

[Javascript] 이벤트 정리  (0) 2019.08.28
Javascript 부모창 id value 가져오기  (0) 2018.12.28
Google JavaScript Style Guide  (0) 2018.04.03
20160629 [JAVASCRIPT] json, cors  (0) 2016.06.29
20160623 [JavaScript]  (0) 2016.06.23