오류

Uncaught ReferenceError: * is not defined 에러 : AJAX

간펴니 2021. 10. 17. 03:22
728x90

012

AJAX 로 구현한 좋아요 , 채택 , 싫어요 기능이 새로 회원가입한 아이디로 클릭 시 

 

Uncaught ReferenceError: * is not defined 에러가 발생하면서 버튼이 먹히질 않았다...

 

참 이상한건 이미 가입해놓았던 회원들은 기능이 정상작동 한다는 것...

 

Controller에 파라미터 로그를 찍어보니 필요한 파라미터의 값들 중, ID (String) 값이 null이 찍혔다.

 

그래서 프론트에서 해당 파라미터를 화면에 출력되도록 했더니 , 값이 제대로 출력.

 

그렇다면 뷰에서 컨트롤러로 넘어갈때 , 뷰에서 제대로 파라미터를 전송하지 못한다는 것이다.

 

이것저것 두시간가량 만져본 결과 Id값이 Number 타입으로 찍히는 것 이였다.....

 

원래 가입해있던 아이디는 2222 , 3333 등 번호로 가입했는데 , 

 

새로 가입한 아이디는 aaaa 등 문자열로 가입을 해서  동작이 안되는 것 이였다..

 

이런 기본적인 것 때문에 2시간을,.... 

 

항상 ajax를 사용할땐 형변환 때문에 .. 참 별 것 아닌 것 때문에 고생한다.. ㅜㅜ

 

그래서 id값

 

var bno = ${read.bno};
var memberId = ${login.memberId};
var writerId = ${read.id};

 

 

var bno = ${read.bno};
var memberId = "${login.memberId}";
var writerId = "${read.id}";

 

처럼 String 값으로 넘어가야 하는 값에 ""를 붙여줘서 간단히 해결...

 

하나 싶었지만 댓글의 ajax부분이 제대로 동작하지 않는다.

 

 

그래서 json.stringfiy 도 사용해보고 ,

 

*.toString() ,

 

var * = String(*) 등

 

온갖 방법을 사용해봤지만 소용이 없다.

 

그렇게 다시 찾기를 1시간....

 

해결을 했다.. 정말 간단하게.. ㅜㅜ

 

난 댓글목록을 ajax $.each 함수를 사용해서 

 

  $.each(data, function(key, value) 이렇게 가져오는데,

 

문제는 내가 좋아요나 싫어요 버튼에 넘겨주는 파라미터의 매개변수에 ''  <-- 이 간단한걸 안넣어줘서

 

String값이 아닌 Number값으로 찍힌 것이 였다. 인생;;

 

onclick="commentLike('+value.bno+','+value.rno+' ,\' '+value.id+'\');">

 

이런식으로 value.id 주변에 \' '+value.id+' \' 를 붙여서 문자열로 보내줬다...

 

간단하다. 파라미터 양 옆에 \' 를 붙여주면 된다.

 

ajax에서 onclick으로 문자열 데이터를 매개변수로 보낼땐 꼭 '' , "" 를 달아주도록 하자!!!!!!!!!

 

머리가 나쁘면... 몸이 고생한다...ㅜ

 

 

 

 

 

 

728x90