Ajax
Ajax는 Asynchronous JavaScript and XML의 약자로
자바스크립트로 서버와 비동기적으로 통신하면서 데이터를 주고받는 방식을 얘기한다
이름이 XML이라 XML데이터를 주고받아야 할 것 같지만 굳이 XML만을 사용하지 않아도 되고 요즘은 JSON을 주로 사용한다
이 Ajax는 XMLHttpRequest객체를 사용해서 서버와 통신하는데
- 페이지를 새로고침하지 않고 서버에 요청
- 데이터를 받고 작업을 수행
할수 있다
메소드
const request = new XMLHttpRequest();
우선 서버와 통신할 XMLHttpRequest 객체를 변수에 담아둔다
request.open('method','url',boolean);
open 메소드는 서버에 요청하는 메소드인데
첫번째 인자로 요청하는 방법 GET, POST, PUT... 등등 서버에서 지원하고 있는 메소드들을 대문자로 적어주고
두번째 인자에는 요청하는 서버의 url을
세번째 인자에는 이 요청을 동기식, 비동기식으로 설정해주는 boolean값이 들어간다
생략가능한 값인데 생략하게되면 기본값인 true로 들어가 비동기적인 통신을 한다
request.send();
위의 open메소드를 POST방식으로 요청했다면 데이터를 보낼 수 있는 메소드이다 (그렇지않다면 빈칸)
데이터는 종류에 상관없이 모든 데이터를 보낼 수 있다
request.setRequestHeader('header', 'value');
HTTP 요청 헤더의 값을 설정하는 메소드
setRequestHeader는 서버에 요청하고 난 후(open) 서버에 데이터를 보낸다면 그전(send) 그 사이에 설정해주어야 하는 값이다
request.onreadystatechange(function(){});
위의 open, send메소드로 서버에 요청이 끝났다면 실행되는 콜백 함수이다
서버에 응답을 받고 실행할 로직들을 이 함수 내에 작성하면 된다
requset.readyState
readyState는 메소드는 아니지만 서버에 요청하고 응답을 받은 뒤의 상태를 나타내는 상태코드를 가진 프로퍼티이다
0~5까지의 상태가 있으며 그 상태들의 설명은 모질라 사이트에 자세히 나와있다
https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/readyState
사용법
대충 굵직한 것은 다 알아보았으니 실제 사용 방법을 보자
const request = new XMLHttpRequest();
request.open('POST','index.html');
request.send();
XMLHttpRequest객체를 받아 온 뒤에
index.html 주소에 GET방식으로 요청했다
request.onreadystatechange = function () {
if (request.readyState === XMLHttpRequest.DONE) {
if (request.status === 200) {
console.log(request.response);
}
}
};
콜백 함수내부인데
XMLHttpRequest.DONE 프로퍼티는 상수로서 4를 가지고 있고
request.readyState의 상태가 4인지 확인하는 조건문
requset.status는 요청한 응답이 성공적인지 확인하는 조건문이다
자세한 코드들은 모질라 사이트에서 확인 https://developer.mozilla.org/ko/docs/Web/HTTP/Status
위의 두 조건문을 만족하고 request.response가 정상적으로 콘솔창에 출력되었다
'JavaScript' 카테고리의 다른 글
Number() vs parseInt() (0) | 2020.11.16 |
---|---|
form event (0) | 2020.11.12 |
form (0) | 2020.11.07 |
마우스 좌표값 (0) | 2020.10.20 |
정규 표현식 (0) | 2020.10.18 |