728x90
경과
회원가입 시 ID 중복여부 유효성 검사를 위해 ajax로 json 포맷으로 컨트롤러로 데이터를 전송하고, sql매퍼 파일에서 count(*)로 전송받은 데이터가 테이블에 몇개나 있는지 조회하는 쿼리를 실행하는데, 테이블에 똑같은 값이 굉장히 많은데도 불구하고 계속 0으로 출력되었다.
원인
json의 기본 데이터 포맷을 보면 키, 값 쌍으로 이루어진 것을 알 수 있다.
여기서 키는 항상 쌍따옴표로 감싸지고, 값도 문자열이라면 쌍따옴표로 감싸지게 되는데, ajax로 컨트롤러에 전송하는 순간 쌍따옴표로 감싸지게 되어 원래의 문자열보다 2자리가 더 늘어나게 된다.
아래는 실제 문자열의 길이보다 값이 더 증가한 예시이다.
JSON으로 전달받은 값의 길이를 출력해보니 4가 나왔는데, 실제로 전송한 값(username)은 11이었다.
ajax를 이용해 json 포맷으로 11을 전송할 때 쌍따옴표로 감싸지게 되어 "11"로 변환되었고, 이렇게 계속 다른 값을 테이블에서 찾고 있으니 오류가 나는게 당연했다....
결과
최선의 방법인지는 모르겠으나 일단 서버쪽에서 replace( ) 함수를 이용해 치환해준 후 데이터를 받기로 하였다.
728x90