window.location.search
를 이용하면 ?id=3&nick=outsider라는 쿼리스트링이 그대로 튀어나온다. 이걸 그대로 가공해서 사용해도 되지만 prototype.js는 이걸 위한 메서드를 제공한다. (window.location.search는 prototype.js에서 제공하는 것은 아니고 javascript에서 제공하는 것이다.)
parseQuery()
toQueryParams()
Prototype Framework의 API문서를 보면 parseQuery()은 "toQueryParams()의 별칭"이라고 나온다. 결국 기능은 toQueryParams()만 있는건데 쿼리스트링을 파라미터와 값의 쌍으로 된 Object를 리턴해 준다. API문서에 자세한 예시들이 있기 때문에 보면 금방 이해가 될 것이다.(사이트 개편된뒤로 API문서나
만약 http://www.test.com/test/test.jsp??id=3&nick=outsider 라고 호출했을 경우 다음 코드를 실행하면 주석해 보시된 내용의 값을 출력해 준다.
//var params = window.location.search.parseQuery();
var params = window.location.search.toQueryParams();
alert(window.location.search); // ?id=3&nick=outsider
alert(params.id); // 3
alert(params.nick); // outsider
1번과 2번줄은 아무것이나 사용해도 차이가 없다.
만약 정의되지 않거나 값이 없는 파라미터를 가져오려고 하면 undefined가 나온다.
도메인툴에서 제 블로그에 쿼리스트링을 포함한 링크가 있으니 이걸 제거하라고 하네요.
Link URLs contain querystrings: Rewrite links to work without using querystrings.
이게 도대체 무슨 말인가요? 쿼리스트링이란 개념이 좀 생소해서요...
도메인 툴이란게 정확히 어떤것을 말씀하시는 지는 모르겠는데요.
보통 URL에 쿼리스트링이라고 말하면 GET방식으로 보내는 URL의 파라미터를 말합니다.
www.example.com/bbs.php?id=7&cmd=list&search=test
이런식의 주소이면 ?뒤에 있는 id=7&cmd=list&search=test 를 쿼리스트링이라고 말합니다. 서버에서 이쿼리스트링의 값을 가지고 어떤식의 동작을 할지를 결정할 수 있죠.
텍스트큐브같은 경우는 이걸 rewrite해서
www.example.com/bbs/7
이런등의 방식으로 깔끔하게 보여줍니다. 블로그에 가봤는데 어떤부분을 가지고 쿼리스트링이 문제라고 하는지는 잘 모르겠네요.
답변 고맙습니다.
한동안 삽질로 결국 찾아냈습니다.
텍스트큐브의 링크 중에 ?가 들어간 링크를 쿼리스트링이라고 그러네요.
피드버너 이메일구독 링크와 Prev페이지, Next 페이지 등 페이지 이동 링크등에 걸린 것이 모두 쿼리스트링이더군요.
답변 정말 고맙습니다.
문제를 찾으셨다니 다행이네요.. ^^