Ajax(Asynchronous JavaScript and XML)
웹브라우저의 화면 뒤에서 웹서버와 HTTP통신으로 데이터교환이 가능한 객체
전체 페이지의 리로딩없이 웹페이지의 일부분을 서버로부터 받아온 데이터로 갱신하는 것이 가능하다
모든 브라우저에 내장되어 있다.
(Chrome, Firefox, IE7+, Edge, Safari, Opera)
주요 API
Property
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
// 서버가 보낸 데이터 조회
// 데이터를 사용해서 HTML 컨텐츠 제작
// HTML 컨텐츠를 화면의 특정위치에 반영
}
}
Method
Object 표기법
{name:value, name:value, name:value}
public class Book {
int no; String title; String writer; String publisher; int price;
}
{"no":10, "title":"이것이 자바다", "writer":"홍길동", "price":31000}
public class Team {
String name; List<String> members;
}
{"name":"트와이스", "members":["나연", "정연", "모모", "사나", "지효", "미나", "다현", "채영", "쯔위"]}
public class Student {
String name; Major major;
}
public class Major {
String name; String grade;
}
{"name":"홍길동", "major":{"name":"전자공학", "grade":"석사"}}
Map<String, Object> map = new HashMap<String, Object>();
map.put("keyword", "자바");
map.put("records", 3);
map.put("items", books) <- List<Book> books = bookDao.searchBooks(title);
{"keyword":"자바",
"records":3,
"items":[
{"title":"이것이 자바다", "publisher":"한빛미디어"},
{"title":"자바의 정석", "publisher":"한빛미디어"},
{"title":"생활코딩 자바편", "publisher":"한빛미디어"}
]
}
Array 표기법
String[] names = {"김유신", "강감찬", "홍길동"}
["김유신", "강감찬", "홍길동", "이순신"]
public class Category {
int no; String name;
}
List<Category> categories = categoryDao.getAllCategories();
[{"no":100, "name":"가구"}, {"no":"200", "name":"가전제품"}]
VO, Map -> {"name":value, "name":value} -> JSON.parse(text) 객체
배열,List -> [value, value, value, value] -> JSON.parse(text) 배열
VO, Map <- {"name":value, "name":value} <- JSON.stringify(객체) 객체
배열,List <- [value, value, value, value] <- JSON.stringify(배열) 배열