ajax를 설정할 때 보이는 두가지 이름 dataType과 contentType!
최근에 오류가 생겨서 찾다보니 다음의 문제를 겪게 되었다.
$.ajax({
type : "POST",
url : 'login',
data : JSON.stringify(userData),
dataType : 'json',
contentType : 'application/json; charset:UTF-8',
error : function(status, error){
alert("통신 에러");
console.log(error);
},
success : function(result){
alert(result.code);
}
});
다음의 코드를 보게 되면 문제없이 사용되고 있다고 생각하고 진행했었는데, dataType과 contentType의 쓰임을 제대로 알고나면 저 코드는 크나큰 오류를 범하고 있던 것이었다.
SyntaxError: Unexpected token < in JSON at position 0 << 이 오류를 만난게 되어 위의 상황을 이해하고 공부하게 되었다.
데이터가 api 서버로 넘어가는덴 문제가 없는데 응답을 보내고 난 뒤가 이렇게 문제가 된 이유는 dataType의 설정이 문제였다.
현재 api에는 'return HttpResponse('Login failed. Try again.')' <<
이러한 형식으로 각 view method에 잡아두었는데 이것이 위에 설정과 부딪혀 생긴 문제였다.
여기서 요즘 나도 그렇지만 한줄로 요약하는 걸 좋아하니 위엔 다 일기장 같은거고
결국엔 dataType은 응답을 보내고 난 뒤에 생기는 결과의 모습,
contentType은 내가 반대로 보낼 때의 데이터 형식이다.
즉, 위에 오류는 dataType은 json이라 해놓고 return값을 저렇게 해 놓았으니 에러가 나고 success의 응답으로 보여지질 않았던 것이었다 ..