JavaScript Ajax JSON parse error

HYE-ON·2020년 2월 28일
1
post-thumbnail

JSON parse error: Unrecognized token ‘id’: was expecting ('true', ‘false’ or ‘null’)

JSON parse error: Unrecognized token 'email': was expecting (JSON String, Number, Array, Object or token 'null', 'true' or 'false');



$.ajax({
  type: 'POST',
  url: url,
  data: {
    'id' : key,
  },
  contentType: 'application/json',
  dataType: 'json'
});

이런 식으로 데이터를 Ajax 통신을 이용해 Spring Boot로 구성된 백엔드로 전달할 때 계속 콘솔에 위와 같은 오류가 떴습니다.
언제나처럼 stack overflow에 검색해본 결과

jQuery가 Javascript Object를 자동으로 JSON 형태로 변환해주지 않기 때문에 JSON.stringify()를 사용해야합니다. (jQuery doesn't encode Javascript objects into JSON automatically, you need to do it manually with JSON.stringify())

보내는 데이터를 JSON.stringify()로 감싸주니 개발자 도구 Network에도 제대로 뜨고 값이 제대로 전달되었어요! 어떤 글에서는 HTTP와 HTTPS의 문제라고도 해서 HTTP와 HTTPS 두 환경에서 실행해보았을 때 JSON.stringify()를 사용하지 않으니 계속해서 같은 에러가 발생해서 HTTP 문제는 아니라고 결론지었습니다.

🤔 JSON.parse()가 아닌 JSON.stringify()를 사용해야 하는 이유는 아직 알아내지 못했어요...
아시는 분은 댓글 남겨주시면 감사하겠습니다...!

profile
우주에 가고 싶은 프로그래머

2개의 댓글

comment-user-thumbnail
2020년 4월 23일

JSON.stringify() 는 자바스크립트 객체를 json문자열로 바꿔주는거고, JSON.parse()는 json문자열을 파싱(=분석)해서 자바스크립트 객체로 사용 가능하게 해주는 메서드로 알고 있어요. ajax 통신에서 지금J자바스크립트 객체로 되어 있는 data 부문을 json 문자열로 바꿔줘야 송신이 가능해요.

답글 달기
comment-user-thumbnail
2021년 2월 15일

덕분에 도움이 되었습니다.

답글 달기