Today I Learned/TIL 07

2023 - 07 - 02 Ajax 매서드 (JQuery)

sangwoo_rhie 2023. 7. 3. 17:23

https://take-it-into-account.tistory.com/66

https://devmg.tistory.com/222

Ajax는 Asynchronous JavaScript and XML의 줄임말로, 자바스크립트와 XML을 이용해서 비동기 식으로 서버와 통신한다. Ajax는 프로그램 언어가 아니다.

 

 

$.ajax({
         url : requestURL (필수입력)
         type: 'GET' (통신방식 (POST, GET) 등을 지정).
         async: true,
         data: JSON.stringify(requestParam), (서버로 보낼 데이터를 입력)
         dataType: "json" 통신의 결과로 넘어올 데이터 종류를 지정한다.
         timeout: 10000, (선택사항)
         contentType: "application/json"
         beforeSend:function(){
         	$(`.wrap-loading`).removeClass(`display-none`);
         },
         complete:function(){
         	$(`.wrap-loading`).addClass(`display-none`);
         },
         success: function(data) {
          //  전송에 성공하면 실행될 코드;
          if(successFunction!=undefined){
          	successFunction(data)};
        },
        error:function(request, status, error){
          // 전송에 실패하면 실행될 코드;
          alert("code:" + request.status + "₩n" + "message:" + request.responseText 
          + "₩n" + "error:" + error);
          
          const err = JSON.parse(request, responseText);
          alert(err.resData[0].errorMsg){
          	errorFunction();
          }
          
          $(`.wrap-loading`).addClass(`display-none`);
          }
          fail : function(){
          	alert("인터넷 연결 상태를 확인해주세요.")
            $(`.wrap-loading`).addClass(`display-none`);
          }
        });
     }
          
    });

async (비동기 통신)

true :기본값. 비동기(요청을 보낸 후 응답결과와는 상관없이, 다음 방식이 동작함)

false: 동기. (요청을 보낸 후 응답결과를 받아야지만 다음 동작이 이뤄짐)

 

contentType (전송헤더의 타입)

서버에 데이터를 보낼 때 사용 content-type의 헤더 값

application/json;  charset-utf-8이 흔히 쓰임.

 

 

dataType (서버에서 어떤 타입을 받을지 정의)

text, html, xml, json, jsonp, and script 등 있음.

{"success":true} 와 같은 구조의 값을 받으려면 dataType: "json"으로 작성해야 함.

"success"와 같은 문자열 값을 받으려면 dataType: "test"로 작성

<div> SUCCESS! </div> 같은 결괏값을 받을면 dataType: "html"로 작성

 

 

timeout (요청시간 제한)

제한시간 (밀리초) 설정. 제한시간 내 요청 미완료 시 요청 취소되거나 error콜백이 정의되어 있다면 호출됨

 

 

type (HTTP 통신의 종류)

HTTP 통신의 종류를 설정. 기본값은 "GET"

GET, POST, PUT, DELETE 등이 있음.

RESTful에 "PUT" 또는 "DELETE"를 지정할 수 있지만 모든 브라우저가 지원하는 것은 아님.

 

 

complete (function)

Ajax통신 완료될 때 호출되는 함수. success나 error가 호출된 후 호출됨.

 

beforeSend (function)

Ajax 요청 전에 실행되는 함수. 반환값을 false로 설정하면 Ajax 전송 취소

 

error (function)

Ajax 통신 실패 시 호출되는 콜백함수

 

success (function)

Ajax 통신에 성공할시 호출되는 콜백함수

함수의 응답 본문은 이 함수의 첫 번째 매개변수로 전달되며, dataType 프로퍼티에 명시한 형태로 구성되고, 두 번째 매개변수는 상태값을 나타내는 문자열이며 항상 success로 나타낸다.

 

JSON.stringify

Json을 string(문자열)형태로 변환

 

JSON.parse

string(문자열)을 Json 형태로 변환

 

 

 

<script>
 // request라는 id를 가진 버튼 클릭 시 실행.
$("#request").click(function(){
	const params = {
		name : $("#name").val(),  // id앞에는 #, class앞에는 . 
		gender : $("gender").val(),
		age : $("age").val(),
		phonenumber : $("phonenumber").val(),
})

// ajax 통신

$.ajax({
	type: "POST",
	url: "/test/ajax",
	data: params,
	success: function(res){
	alert(res.code) // 응답코드>0000
	},
	error: function(XMLHttpRequest, textStatus, errorThrown) {
	alert("통신 실패")
	}
	})
});
</script>