이 글은 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을 추가한다.
},
});