서버는 항상 동일한 HTML만 응답하는 Ajax 응용에서 사용자의 입력에 따른 현재 상태를 즐겨찾기로 저장을 하고 싶다면 어떻게 해야 할까?
1. Query String을 이용한다.
서버에서는 query string에 따라서 처리를 하는 것이 없지만 javascript는 그 내용을 읽어서 처리를 할 수가 있다.
http://www.example.com/dir/?q=123를 javascript에서 읽어 들이는 방법에는 아래의 2가지가 있다.
console.log("document.location:" + document.location);
console.log("location.href:" + location.href);
=>
document.location:http://www.example.com/dir/?q=123
location.href:http://www.example.com/dir/?q=123
document.location과 location.href는 같은 결과를 보여준다. Redirect가 일어난 경우에는 다른 결과를 보여준다고 하지만 서버에 의한 REDIRECT인 경우에는 같은 결과를 보여주었다.
2. Query String에 따라서 다른 처리를 한다.
? 이후의 query string은 location.search을 읽으면 된다. 다음은 query string을 오브젝트로 만들어 주는 예이다. (Javascript The Definitive Guide 14.2.1 참조)
function getArgs() {
var args = new Object();
var query = location.search.substring(1);
var pairs = query.split(“&”);
for(var i = 0; i < pairs.length; i++) {
var pos = pairs[i].indexOf(‘=’);
if (pos == –1) continue;
var argname = pairs[i].substring(0,pos);
var vallue = pairs[i].substring(pos + 1);
value = decodeURIComponent(value);
args[argname] = value;
}
return args;
}