Ajax 처리 프로세스 

XMLHttpRequest 객체 생성 -> 웹 서버에 요청 전송 -> 응답을 브라우저에 출력 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ajax 개요 및 작성법(XHR객체))</title>
<script>
	var xhr = null;//전역변수의 성격
	
	function getXHR(){
		if(window.XMLHttpRequest){//브라우저가 XHR객체를 가지고 있다면
			return new XMLHttpRequest();
		}
	}
	
	function load(url){
		//XHR객체 생성
		xhr = getXHR()
		//(a)
		xhr.onreadystatechange=viewMessage
		//(b)
		xhr.open("GET",url,true)
		//(c)
		xhr.send(null)
	}
	
	//콜백함수
	function viewMessage(){
		//(d)
		if(xhr.readyState==4){
			//(e)
			if(xhr.status==200){
				//(f)
				alert(xhr.responseText)
			}else{
				alert('실패: '+xhr.status)
			}
		}
	}
</script>
</head>
<body>
<input type="button" value="t1.txt" onclick="load('t1.txt')">
</body>
</html>

 

* t1.txt

요청하는 텍스트 파일(단순 텍스트 파일형태)

 

*(a)

readystate 프로퍼티 값이 변할때마다 호출할 함수를 지정.

(AJAX 요청 시, xhr객체는 상태에 따라 readyState의 값이 변경된다)

xhr객체명.onreadystatechange=콜백함수명

콜백함수: 서버로부터 응답을 받으면 자동으로 호출되는 함수
주의) 함수에 ()쓰면 안된다

 

*(b)

요청을 열고, 요청 url, 방식 등을 설정.

xhr객체명.open(p1,p2,p3)

p1 : 요청방식(get/post)

p2 : 요청문서명(url)

p3 : 처리방식(비동기방식(true)/동기방식(false))-> 실질적으로 true만 사용

 

*(c)

요청을 서버로 보냄.

xhr객체명.send()

 

*(d)

xhr객체.readyState 값에 따라 클라이언트의 요청이 완료되었는지 여부를 확인할 수 있음.
readyState가 4인 경우 요청완료,

1,2,3인 경우는 일부만 완료된 경우이다.

 

*(e)

xhr객체.status 값에 따라 톰캣서버가 클라이언트에게 데이터를 다 전송했는지 확인할 수 있다.

즉, 응답이 성공적으로 완료된 경우를 의미한다. 

status값이 200인 경우 정상 완료된 경우이고,

그 외, 404(페이지 없음 에러), 500(문법 에러), 403(접근 불가 에러) 등의 값이 있다.  

 

*(f)

responseText : 데이터를 텍스트로 보낸 경우

responseXml : 데이터를 xml로 보낸 경우

 

+ Recent posts