JS 튜토리얼

제이에스 홈 JS 소개 JS 어디로 JS 출력 JS 문 JS 구문 JS 코멘트 JS 변수 제이에스렛 JS 상수 JS 연산자 JS 산술 JS 할당 JS 데이터 유형 JS 함수 JS 객체 JS 이벤트 JS 문자열 JS 문자열 메서드 JS 문자열 검색 JS 문자열 템플릿 JS 번호 JS 숫자 메서드 JS 배열 JS 배열 메서드 JS 배열 정렬 JS 배열 반복 JS 배열 상수 JS 날짜 JS 날짜 형식 JS 날짜 가져오기 메서드 JS 날짜 설정 방법 JS 수학 JS 랜덤 JS 부울 JS 비교 JS 조건 JS 스위치 JS 루프 In에 대한 JS 루프 의 JS 루프 JS 루프 동안 JS 브레이크 JS 이터러블 JS 세트 JS 맵 JS 유형 JS 유형 변환 JS 비트와이즈 JS 정규 표현식 JS 오류 JS 범위 JS 호이스팅 JS 엄격 모드 JS 이 키워드 JS 화살표 함수 JS 클래스 JS JSON JS 디버깅 JS 스타일 가이드 JS 모범 사례 JS 실수 JS 성능 JS 예약어

JS 버전

JS 버전 JS 2009(ES5) JS 2015(ES6) JS 2016 JS 2017 JS 2018 JS IE / 엣지 JS 연혁

JS 객체

객체 정의 개체 속성 개체 메서드 개체 표시 개체 접근자 객체 생성자 개체 프로토타입 객체 반복 가능 객체 세트 객체 맵 개체 참조

JS 함수

기능 정의 기능 매개변수 함수 호출 함수 호출 기능 적용 함수 클로저

JS 클래스

수업 소개 클래스 상속 클래스 정적

JS 비동기

JS 콜백 JS 비동기 JS 약속 JS 비동기/대기

JS HTML DOM

DOM 소개 DOM 메서드 DOM 문서 DOM 요소 DOM HTML DOM 양식 DOM CSS DOM 애니메이션 DOM 이벤트 DOM 이벤트 리스너 DOM 탐색 DOM 노드 DOM 컬렉션 DOM 노드 목록

JS 브라우저 BOM

JS 창 JS 화면 JS 위치 JS 연혁 JS 네비게이터 JS 팝업 경고 JS 타이밍 JS 쿠키

JS 웹 API

웹 API 소개 웹 양식 API 웹 기록 API 웹 스토리지 API 웹 작업자 API 웹 가져오기 API 웹 지리적 위치 API

JS 아약스

AJAX 소개 AJAX XMLHttp AJAX 요청 AJAX 응답 AJAX XML 파일 AJAX PHP AJAX ASP AJAX 데이터베이스 AJAX 애플리케이션 AJAX 예제

JS JSON

JSON 소개 JSON 구문 JSON 대 XML JSON 데이터 유형 JSON 구문 분석 JSON 문자열화 JSON 객체 JSON 배열 JSON 서버 JSON PHP JSON HTML JSON JSONP

JS 대 jQuery

jQuery 선택기 제이쿼리 HTML 제이쿼리 CSS 제이쿼리 DOM

JS 그래픽

JS 그래픽 JS 캔버스 JS 플로틀리 JS 차트.js JS 구글 차트 JS D3.js

JS 예제

JS 예제 JS HTML DOM JS HTML 입력 JS HTML 객체 JS HTML 이벤트 JS 브라우저 JS 편집기 JS 연습 JS 퀴즈 JS 인증서

JS 참조

자바스크립트 객체 HTML DOM 객체


AJAX - XMLHttpRequest


XMLHttpRequest 객체는 서버에서 데이터를 요청하는 데 사용됩니다.


서버에 요청 보내기

서버에 요청을 보내기 위해 XMLHttpRequest객체의 open() 및 send() 메서드를 사용합니다.

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Method Description
open(method, url, async) Specifies the type of request

method: the type of request: GET or POST
url: the server (file) location
async: true (asynchronous) or false (synchronous)
send() Sends the request to the server (used for GET)
send(string) Sends the request to the server (used for POST)

URL - 서버의 파일

메소드 의 url 매개변수는 open()서버에 있는 파일의 주소입니다.

xhttp.open("GET", "ajax_test.asp", true);

파일은 .txt 및 .xml과 같은 모든 종류의 파일이거나 .asp 및 .php와 같은 서버 스크립팅 파일(응답을 다시 보내기 전에 서버에서 작업을 수행할 수 있음)일 수 있습니다.


비동기 - 참 또는 거짓?

서버 요청은 비동기식으로 보내야 합니다.

open() 메서드의 async 매개변수는 true로 설정해야 합니다.

xhttp.open("GET", "ajax_test.asp", true);

비동기식으로 전송하면 JavaScript는 서버 응답을 기다릴 필요가 없지만 대신 다음을 수행할 수 있습니다.

  • 서버 응답을 기다리는 동안 다른 스크립트 실행
  • 응답이 준비된 후 응답 처리

async 매개변수의 기본값은 async = true입니다.

코드에서 세 번째 매개변수를 안전하게 제거할 수 있습니다.

동기식 XMLHttpRequest(async = false)는 서버 응답이 준비될 때까지 JavaScript 실행이 중지되므로 권장되지 않습니다. 서버가 사용 중이거나 느린 경우 응용 프로그램이 중단되거나 중지됩니다.


GET 또는 POST?

GET보다 간단하고 빠르며 POST대부분의 경우에 사용할 수 있습니다.

그러나 다음과 같은 경우 항상 POST 요청을 사용하십시오.

  • 캐시된 파일은 옵션이 아닙니다(서버의 파일 또는 데이터베이스 업데이트).
  • 많은 양의 데이터를 서버로 전송합니다(POST에는 크기 제한이 없습니다).
  • 사용자 입력(알 수 없는 문자를 포함할 수 있음)을 보내는 POST는 GET보다 강력하고 안전합니다.

GET 요청

간단한 GET요청:

예시

xhttp.open("GET", "demo_get.asp");
xhttp.send();

위의 예에서 캐시된 결과를 얻을 수 있습니다. 이를 방지하려면 URL에 고유 ID를 추가하십시오.

예시

xhttp.open("GET", "demo_get.asp?t=" + Math.random());
xhttp.send();

메소드 로 정보를 보내려면 GETURL에 정보를 추가하십시오.

예시

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford");
xhttp.send();

서버가 입력을 사용하는 방법과 서버가 요청에 응답하는 방법은 이후 장에서 설명합니다.



POST 요청

간단한 POST요청:

예시

xhttp.open("POST", "demo_post.asp");
xhttp.send();

HTML 양식과 같은 POST 데이터를 사용하려면 HTTP 헤더를 setRequestHeader(). send()메서드 에서 보낼 데이터를 지정합니다 .

예시

xhttp.open("POST", "ajax_test.asp");
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Method Description
setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name
value: specifies the header value

동기 요청

동기 요청을 실행하려면 open()메서드 의 세 번째 매개변수를 다음으로 변경합니다 false.

xhttp.open("GET", "ajax_info.txt", false);

때때로 async = false는 빠른 테스트를 위해 사용됩니다. 또한 이전 JavaScript 코드에서 동기 요청을 찾을 수 있습니다.

코드는 서버 완료를 기다리므로 onreadystatechange 함수가 필요하지 않습니다.

예시

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;

동기식 XMLHttpRequest(async = false)는 서버 응답이 준비될 때까지 JavaScript 실행이 중지되므로 권장되지 않습니다. 서버가 사용 중이거나 느린 경우 응용 프로그램이 중단되거나 중지됩니다.

최신 개발자 도구는 동기 요청 사용에 대해 경고하도록 권장되며 발생 시 InvalidAccessError 예외가 발생할 수 있습니다.