본문 바로가기

공부함

[jquery] api의 return Type이 void일 때 ajax 통신 결과가 200:ok 가 에러로 잡히는 현상 수정

 

[ 문제사항 ] 

api의 return Type이 void일 때 200을 반환했음에도 클라이언트에서 에러로 반환된 현상이 발생

 

[ 원인 ]

api에서 반환결과가 없는데 클라이언트에서 ajax 통신의 반환결과를 json 타입으로 받도록 설정되어 있어 발생한 현상.

 

 

 

[ 해결방안 ]

1) api 에서 return 할 데이터를 지정해주는 방법 

  ㄴ 현상의 해결을 위하여 불필요한 임의의 값을 반환하는 것은 의미가 없다고 판단되어 해결방안으로 채택하지 않음

2) client에서 dataType을 제거 ✅ 

$.ajax({
    type: 'POST',
    url: '/post/write,
    data: JSON.stringify(postObj),
    contentType: 'application/json',
  // dataType : 'json', // 반환 dataType를 json으로 설정하여 문제가 발생함 
    success : function () {
        console.log(" 글 저장 성공 !! " );
    },
    error: function (xhr) {
        console.log(xhr)
        if (xhr.status === 400 ){
            console.log("error", xhr.status + " : " + xhr.statusText);
            alert(" 입력값을 다시 확인해주세요. 제목과 본문은 모두 입력되어야합니다.");
        } else {
            console.log("error", xhr.status + " : " + xhr.statusText);
            alert(" postSave : 알 수 없는 에러 발생으로 인하여 저장 실패. ");
        }
    }
});