Ajax 요청에서 dataType 과 contentType은 뭐가 다른걸까?

charco·2021년 5월 30일
2

이 글은 stackoverflow 의 글을 해석한 글입니다.
출처 https://stackoverflow.com/questions/18701282/what-is-content-type-and-datatype-in-an-ajax-request/18701357

다음과 같은 POST 요청이 있을때 dataType과 contentType은 각각 무엇을 의미할까?

	    type: 'POST',
            url: '/api/v1/user',
            dataType: 'json',
            contentType: 'application/json; charset=utf-8',
            data: JSON.stringify(data)

contentType은 보내는 데이터의 타입이다.
application/json; charset-utf-8이 흔히 쓰인다.
디폴트는 application/x-www-form-urlencoded; charset=utf-8 이다.

dataType은 서버에서 어떤 타입을 받을 것인지를 의미한다.
json, html, text 등등...
jQuery가 이것을 이용해 success나 done 함수의 파라미터로 받아 처리한다.

만약 아래와 같이 post하고

{"name": "John Doe"}

아래의 값을 반환받기 원한다면

{"success":true}

아래처럼 작성해야한다.

var data = {"name":"John Doe"}
$.ajax({
    dataType : "json",
    contentType: "application/json; charset=utf-8",
    data : JSON.stringify(data),
    success : function(result) {
        alert(result.success); // result 는 반환받은 JSON으로 만들어진 객체다.
    },
});

만약 아래의 결과를 원한다면

<div>SUCCESS!!!</div>

아래처럼 작성해야한다.

var data = {"name":"John Doe"}
$.ajax({
    dataType : "html", //서버에서 html타입을 반환받는다.
    contentType: "application/json; charset=utf-8",
    data : JSON.stringify(data),
    success : function(result) {
        jQuery("#someContainer").html(result); // 반환받은 html을 추가한다.
    },
});
profile
아직 배우는 중입니다

0개의 댓글