Ajax 05

포스트 데이터 처리하기

GET 메소드는 약간의 데이터를 송신하는 데 편리하지만 송신할 수 있는 정보량에 제한이 있다. 구체적인 사이즈 제한은 사용하고 있는 환경에 따라 다르지만, 수백 바이트를 넘는 데이터를 송신하는 경우는 통상적으로 (GET이 아닌) POST를 이용하는 것이 좋다.

POST 메소드를 사용하는 경우에는 리퀘스트 송신 부분을 다음과 같이 고쳐 쓸 필요가 있다.

							req.open('GET', 'helloAjax.php?name='+encodeURIComponent(docuemtn.fm.name.value), true);
							req.send(null);
						

							req.open('POST', 'helloAjax.php', true);
							req.sendRequestHeader('content-type', 'application/x-www-form-urlencoded; charset=UTF-8');
							req.send('name='+encodeURIComponent(document.fm.name.value));
						

여기에서의 포인트는 두 가지다.

(1) Content-type 헤더로서 "application/x-www-form-urlencoded; charset=UTF-8"을 지정한다.

Content-type 헤더는 리퀘스트 데이터의 형태를 나타내기 위한 정보다. Content-type 헤더를 명시하고 있지 않은 경우는 사용하고 있는 브라우저에 따라 올바르게 데이터를 송신할 수 없을 가능성도 있기 때문에 주의가 필요하다.

(2) 요구 데이터는 send 메소드의 인수로서 지정한다.

GET 메소드에서는 URL의 말미에 쿼리 정보로 부여하고 있지만, POST 메소드에서는 이 방법을 사용할 수 없다. GET 메소드의 경우와 같이 형식은 「키명=값&...」 값도 이미 encodeURIComponent 함수로 인코딩해 둘 필요가 있다.