728x90
더보기
AJAX(아작스 또는에이작스)
JavaScript의 라이브러리
동기식과 비동기식
비동기는 비순차적, 동기는 순차적
효율은 비동식이 좋음
페이지 일부분만 바꾸고 싶을 때 ajax를 사용!
ajax를 사용할 수록 클라이언트 자원을 쓰므로 서버 부하가 줄어!
서버는 달라는 데이터만 주고 무엇을 할지에 대한 것은은 클라이언트에서
요즘은 xml보다는 json을 많이 사용(파일이 무겁고 불편하기 때문)
[spa(single page application)]
아작스부분만 변경!
페이지는 그대로 두고(고정) 페이지 뒤로 서버와 통신(데이터 전송방식은 xml)
>>Angular.js와 React.js(페이스북**)가 AJAX기능을 편리하게 사용할 수 있도록 만듦.
아작스 시작!
1. 통신객체 생성. 통신을 대신해줄 사람
<script>
var v_ajax = new XMLHttpRequest();
</script>
2. 통신방법, 어떤것과 연결을 할 것인지, 비동기여부
v_ajax.open("메소드", "URL", "비동기여부");
통신 메소드는 get과 post가 존재
URL은 일단 우리쪽 서버에 있는 data.txt
통신 방식은 무조건 비동기방식(true)
<script>
v_ajax.open("get", "data.txt", true);
</script>
더보기
만약 false일때
<script>
v_ajax.open("get", "data.txt", false);
</script>
3. 실행하라
v_ajax.send("전달값: get방식일때 비워두거나 null을 씀");
<script>
v_ajax.send();
</script>
4. 통신객체의 state변화를 체크
4-1.
0, 1은 찍힐 시간이 없어 찍히지 않음
체크가 먼저 나오기 때문에 비동기 방식임을 알 수 있다.
<script>
v_ajax.onreadystatechange = function () {
console.log(v_ajax.readyState); //통신객체의 상태값
}
console.log("체크")
</script>
4-2.
상태값 0,1,2,3에는 관심 없음. 완료되었다는 4번만 관심
readyState
0 (uninitialized):request가 초기화되지 않음
1 (loading):(서버와의 연결이 성사됨
2 (loaded):서버가 request를 받음
3 (interactive):(request(요청)을 처리하는 중
4 (complete) :request에 대한 처리가 끝났으며 응답할 준비가 완료됨
통신은 최소 2개의 객체를 통신하는 것이므로 서버의 응답코드도 확인해야한다.
서버의 응답코드
1xx (정보): 요청을 받았으며 프로세스를 계속한다
2xx (성공): 요청을 성공적으로 받았으며 인식했고 수용하였다
3xx (리다이렉션): 요청 완료를 위해 추가 작업 조치가 필요하다
4xx (클라이언트 오류): 요청의 문법이 잘못되었거나 요청을 처리할 수 없다
5xx (서버 오류): 서버가 명백히 유효한 요청에 대해 충족을 실패했다
<script>
v_ajax.onreadystatechange = function () {
if (v_ajax.readyState == 4 && v_ajax.status == 200) {
alert(v_ajax.responseText);
}
}
console.log("체크")
</script>
통신 성공
더보기
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>AJAX시작</title>
</head>
<body>
<script>
// AJAX Asynchronouse JavaScript XML(XML->JSON의 시대)
// 낯설어도 일단 1번은 외워야 함
// 1. 통신객체 생성. 통신을 대신해줄 사람
var v_ajax = new XMLHttpRequest(); // 통신객체생성, 대신 통신해줄 사람
// 2. 통신방법, 어떤것과 연결을 할 것인지, 비동기여부
// v_ajax.open("메소드", "URL", "비동기여부");
// 통신 메소드는 get과 post가 존재
// URL은 일단 우리쪽 서버에 있는 data.txt
// 통신 방식은 무조건 비동기방식
v_ajax.open("get", "data.txt", true); //통신 방식은 무조건 비동기방식
// 3. 실행하라
v_ajax.send();
// 4. 통신객체의 state변화를 체크
v_ajax.onreadystatechange = function () {
// console.log(v_ajax.readyState); //통신객체의 상태값
// 상태값 0,1,2,3에는 관심이 없음
// 완료되었다는 4번에만 관심이 있음
// 통신의 최소 2개의 객체를 통신하는 것이므로 서버의 응답코드도 확인
if (v_ajax.readyState == 4 && v_ajax.status == 200) {
alert(v_ajax.responseText); //서버로부터 전달받은 내용
}
}
// 체크가 먼저 나오기 때문에 비동기 방식임을 알 수 있음
console.log("체크")
</script>
</body>
</html>
+)
alert(v_ajax.responseText) |
alert(v_ajax.responseType) |
|
|
alert(v_ajax.responseURL) |
alert(v_ajax.responseXML) |
'AJAX' 카테고리의 다른 글
AJAX 우회해서 네이버 가져오기 (0) | 2020.08.04 |
---|---|
(JSON이용)AJAX일반화 (0) | 2020.08.03 |
AJAX예제 (0) | 2020.08.03 |