오늘 배운 것
JSON
- 단순히 데이터를 표시하는 표현방법
- Web에서 data를 전송할 때 일반적으로 사용함
- 용량이 작고 이해하기 쉬움
- 중괄호{}로 시작과 끝을 나타냄
- "이름" : 값 으로 표현
- 데이터간 쉼표(,)로 구분
- 네트워크를 통해 데이터를 주고 받는데 자주 사용되는 경량의 데이터 형식
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>JSON Web에서 사용</title>
<link rel="shortcut icon" href="#" />
</head>
<body>
<h1>JSON Web에서 사용</h1>
<div id="output"></div>
<script>
const data =
'{"results":[{"gender":"male","name":{"title":"Mr","first":"Konsta","last":"Paavola"},"location":{"street":{"number":5000,"name":"Itsenäisyydenkatu"},"city":"Pudasjärvi","state":"Satakunta","country":"Finland","postcode":61280,"coordinates":{"latitude":"-8.8931","longitude":"-144.1913"},"timezone":{"offset":"+4:30","description":"Kabul"}},"email":"konsta.paavola@example.com","login":{"uuid":"7aa74aa9-bdb8-4f9f-9e06-58e91fd0e8ce","username":"angrygoose411","password":"trapper","salt":"R1SF8M0M","md5":"8dd03ed533bebd4b4d6b92f47aefdb0d","sha1":"2b0d18f900b727a06bb4dc96dc2553f1a4f8b61b","sha256":"b0c99838885dd9f9b5c3a5c83b0b04e339b4ce21836bce3cce109a685c37433d"},"dob":{"date":"1973-11-14T04:57:35.690Z","age":49},"registered":{"date":"2018-03-29T11:40:43.778Z","age":4},"phone":"02-980-857","cell":"049-433-13-08","id":{"name":"HETU","value":"NaNNA781undefined"},"picture":{"large":"https://randomuser.me/api/portraits/men/57.jpg","medium":"https://randomuser.me/api/portraits/med/men/57.jpg","thumbnail":"https://randomuser.me/api/portraits/thumb/men/57.jpg"},"nat":"FI"}],"info":{"seed":"1992f936271497f0","results":1,"page":1,"version":"1.3"}}';
const dataJSON = JSON.parse(data);
const person = dataJSON.results[0];
const output = document.getElementById('output');
let html = person.name.first + ' ' + person.name.last;
html += '<img src="' + person.picture.thumbnail + '">';
output.innerHTML = html;
const strJSON = JSON.stringify(dataJSON);
console.log(strJSON);
</script>
</body>
</html>

AJAX
- Asynchronous JavaScript and XML의 약자
- 웹페이지 전체를 다시 로딩하지 않고 일부분만 갱신함
- Ajax를 이용하면 백그라운드 영역에서 서버와 통신하여, 그 결과를 웹 페이지의 일부분에만 표시할 수 있음
- 서버와 다양한 형태의 데이터를 주고 받을 수 있음(JSON, XML, HTML 등)
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>AJAX 사용</title>
<link rel="shortcut icon" href="#" />
</head>
<body>
<h1>AJAX 사용</h1>
<div id="output"></div>
<button id="loadNew">불러오기</button>
<script>
const output = document.getElementById('output');
const button = document.getElementById('loadNew');
button.addEventListener('click', () => {
loadAjax();
});
function loadAjax() {
const ajax = new XMLHttpRequest();
ajax.onreadystatechange = function () {
if (ajax.readyState == 4 && ajax.status == 200) {
const dataJSON = JSON.parse(ajax.responseText);
const data = dataJSON.results[0];
const html = '<h2>' + data.name.first + ' ' + data.name.last + '</h2>' + '<img src="' + data.picture.large + '">';
output.innerHTML = html;
}
};
ajax.open('GET', 'https://randomuser.me/api/', true);
ajax.send();
}
</script>
</body>
</html>
불러오기 버튼 클릭 할 때 마다 JSON데이터를 새로 받아 안의 사진과 이름데이터를 출력

