기존 classic web에서는 client가 request를 보내면 server에서 해당 request를 처리 한 뒤 처리 결과를 이용해 html을 만들어 client에 response를 보내는 방식이였다.
만약 response html이 기존의 html과 거의 같다면 server는 response로 매번 html을 보내주는것이 아닌 data만을 보내주는 방법이 효율적이다.
Ajax는 Client에서 JavaScript를 통해 server가 html이 아닌 xml만을 response 할 수 있도록 해주는 request 기술이다.
이후 client에서는 받은 data만을 이용해서 동적인 화면을 구성 할 수 있다.
var request = null;
function createRequest() {
try{
request = new XMLHttpRequest();
//Debug..
//alert ("XMLHttpRequest() 로 request instancet생성완료");
}catch(trymicrosoft){
try{
request = new ActiveXObject("Msxml2.XMLHTTP");
//Debug..
//alert ("ActiveXObject(Msxml2.XMLHTTP) 로 request instancet생성완료");
}catch(othermicrosoft){
try{
request =new ActiveXObject("Microsoft.XMLHTTP");
//Debug..
//alert ("new ActiveXObject(Microsoft.XMLHTTP) 로 request instancet생성완료");
}catch(failed){
request = null;
}
}
}
if( request == null ){
alert ("request객체 생성시 error 발생함.");
}
}
function getSold() {
createRequest();
var url = "calcServerAjax.jsp"
request.onreadystatechange = updatePage;
/*===========true : 비동기=========*/
request.open("GET", url, true);
/*===========false : 동기=========*/
console.log("==>1.request.readyState :"+request.readyState);
request.send(null);
console.log("==>2.request.readyState :"+request.readyState);
console.log("==>3.request.readyState :"+request.readyState);
console.log("==>4.request.readyState :"+request.readyState);
}
function updatePage(){
console.log("====>updatePage() : "+request.readyState);
}
JavaScript에서 data만을 요구하는 request를 보내는 과정은 다음과 같다.
request 생성
cross browsing 문제가 존재하기에 try-catch문을 통해 browser에 맞는 request객체를 생성한다.
open("HttpMethod", "url", "t/f")
open메서드를 통해 request를 초기화 한다
3번째 파라미터는 비동기화 방식(true)을 사용할지 동기화(false) 방식을 사용할지 정하는 파라미터이다
send()
request를 보낼때 Body에 담을 데이터를 넣어주는 메서드이다
GET 방식으로 요청한다면 null값을 넣고 POST 방식으로 요청한다면 요청 data를 넣어준다.
Ajax에서는 요청을 보내고 응답을 받기까지 각 단계가 끝나면 실행되는 Call Back Function을 지원하며 실행되는 단계는 다음과 같다.