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으로 문자열 데이터를 매개변수로 보낼땐 꼭 '' , "" 를 달아주도록 하자!!!!!!!!!
머리가 나쁘면... 몸이 고생한다...ㅜ