<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>AJAX</title>
</head>
<body>
<h1>AJAX</h1>
<p>브라우저에서 웹페이지를 요청하거나 링크를 클릭하면
필연적으로 화면갱신이 발생함</p>
<p>서버로부터 웹페이지가 반환되면 화면 전체를 갱신해야 하는데,
페이지 일부만 갱신하고도 동일한 효과를 볼수있게 하는 기술</p>
<p>이를 통해 데스크탑 프로그램과 동일한 사용자 경험을 제공받을 수 있음</p>
<h2> XMLHttpRequest </h2>
<p>AJAX 처리를 위한 핵심 라이브러리 </p>
<p id="msg">서버로부터 응답 : </p>
<script>
let req = new XMLHttpRequest(); // 1
//서버로 비동기 요청을 위해 ajax 객체 생성
req.onreadystatechange= function (e) { // 4 - 콜백함수
if (req.readyState == 4 ) {
if (req.status == 200) {
let msg = document.getElementById('msg');
msg.innerHTML = msg.innerHTML + req.responseText;
req.responseText;
} else {
console.log('Error!' + req.readyState);
}
} else {
console.log('Error!'+ req.readyState)};
};
// 클라이언트가 서버에 요청한 후
// 서버로부터 넘어오는 결과에 따라
// 응답을 처리하기 위해 콜백함수 정의
// readystate : 0 - open 호출 이전
// readystate : 1 - open 호출 완료
// readystate : 2 - send 호출 완료
// readystate : 3 - 서버 응답 준비중
// readystate : 4 - 서버 응답 완료
// req.status : 200 - '정상 처리완료' 응답 전송 (원하는 데이터 찾아 클라이언트로 보냄)
// req.status : 404 - '찾는 데이터가 없음'
// req.status : 500 - '코드 오류로 인한 비정상 종료'
req.open('GET', '/ajax/sayHello.txt'); // 2
// open(요청방식, 요청URL)
// 서버에 데이터를 요청하기 위해
// 요청방식과 대상이 있는 URL 지정
req.send(); // 3
// 실제로 요청 전송
</script>
<hr>
<input type="text" id="userid">
<button type="button" onclick="checkUid()">아이디 중복검사</button>
<p id="msg2"></p>
<script>
let isExistUid = (res) => {
let isExist = false;
let uid = document.getElementById('userid').value;
let msg2 = document.getElementById('msg2');
let member = JSON.parse(res);
for (let m of member) {
if (m.userid == uid ) {
isExist = true; break;
}
}
if (isExist) {
msg2.innerHTML = '이미 사용중인 아이디!';
msg2.style.color = 'red';
} else {
msg2.innerHTML = '사용가능한 아이디';
msg2.style.color = 'blue';
}
};
let checkUid = () => {
let req = new XMLHttpRequest();
req.onreadystatechange = (e) => {
// alert(req.readyState + '/' + req.status );
if(req.readyState ==4 && req.status == 200) {
// alert(req.responseText);
isExistUid(req.responseText);
}
}; //콜백함수 등록
req.open('GET', '/ajax/member.txt');
req.send();
};
// XML 방식
// <dog>
// <name>식빵</name>
// <family>웰시코기<family>
// <age>1</age>
// <weight>2.14</weight>
// </dog>
//
// JSON 방식
// {
// "name": "식빵",
// "family": "웰시코기",
// "age": 1,
// "weight": 2.14
// }
</script>
</body>
</html>
Hello, World!!
[ {"userid":"abc123" , "passssd":"987xyz"},
{"userid":"abc124", "passssd":"988xyz"},
{"userid":"abc125", "passssd":"989xyz"} ]
'WEB > JavaScript' 카테고리의 다른 글
Js - dom 문서 객체 모델 (0) | 2022.06.13 |
---|---|
Js - regexp 정규표현식 (0) | 2022.06.13 |
Js - 예외 처리 (try ~ catch) (0) | 2022.06.10 |
Js - 내장 함수 2 (0) | 2022.06.10 |
Js - 내장 함수 1 (0) | 2022.06.09 |