비동기적 통신
웹 페이지
의 일부분만을 갱신
할 수 있고,서버와 통신
하여,웹 페이지
의 일부분에만 표시
할 수 있다.JSON, XML, HTML, 텍스트
파일 등이 있고, JSON이 기본
이다.
XMLHttpRequest 객체
open() 메서드
서버로 보낼 ajax 요청의 형식을 설정한다.
open(전달방식, url 주소, 동기여부);
전달방식 : GET, POST 방식 중 하나 선택
URL 주소 : 요청을 처리할 서버의 파일 주소 전달
동기부여 : 요청을 동기식으로 전달할지 비동기식으로 전달할지 선택
- 비동기 : true(기본 값), 동기 : false
send() 메서드
readyState
status
onreadystatechange
status : 서버의 문서상태를 나타낸다. (HTTP 상태코드)
readyState : XMLHttpRequest 객체의 현재 상태를 나타낸다.
onreadystatechange : XMLHttpRequest 객체의 readyState 프로퍼티 값이 변할 때마다 자동으로 호출되는 함수를 설정한다.
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <h3>Ajax 요청 보내기 테스트</h3> <input type="submit" value="GET 방식으로 요청 보내기" onclick="send1();"> <input type="submit" value="POST 방식으로 요청 보내기" onclick="send2();"> <p id="result"></p> </body> <script> function send1() { let xhr = new XMLHttpRequest(); xhr.open("GET", "request_ajax.jsp?userid=apple&userpw=1234", true); xhr.send(); xhr.onreadystatechange = function() { if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200){ document.getElementById("result").innerHTML = xhr.responseText; } } } function send2() { let xhr = new XMLHttpRequest(); xhr.open("POST", "request_ajax.jsp", true); xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); xhr.send("userid=post&userpw=5678"); xhr.onreadystatechange = function() { if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200){ document.getElementById("result").innerHTML = xhr.responseText; } } } </script> </html>
GET 방식
- GET 방식으로 request_ajax.jsp 페이지로 요청을 보낸다.
- send() -> request 요청보낸다.
- url 주소로 보낸 요청을 처리하고, 응답에 대한 결과값은 onreadtstatechage영역으로 응답한다.
- 응답에 대한 결과값은 여기에 담긴다.
POST 방식
🗝️ - POST 방식은 setRequestHeader 필요!
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String userid = request.getParameter("userid"); String userpw = request.getParameter("userpw"); out.print("아이디 : " + userid + "</br> 비밀번호 : " + userpw); %>