Develop
[jQuery] ajax이용시 controller에서 String 형으로 한글 문자열 값 받아오기 본문
웹 개발/JavaScript & jQuery & JSTL
[jQuery] ajax이용시 controller에서 String 형으로 한글 문자열 값 받아오기
개발 기록 2024. 2. 14. 20:40user의 id를 중복체크하는 유효성 검사를 하는 기능을 구현중이었다.
근데 ajax를 통해서 입력이 끝나면 (= 다른 곳으로 포커스를 옮기면 : blur event 이용) 중복검사를 하도록
기능을 구현하던 도중에 ajax에서 controller까지는 잘 가지만 다시 return하여 ajax로 오는 동작에 문제가 있음을 발견하였다.
return값은 String 이었는데 문자가 깨져서 ???로 오는 현상이었다.
이렇게 콘솔창을 통해서 확인하였음
검색하다보니 String반환시에는 한글이 깨져서 올 수 있다고 한다.
이 때
produces = "application/text;charset=utf8"
이 코드를 controller에 추가해주면 된다.
코드는 method방식 다음에 넣었다.
아래 코드 참조
// user id 중복 체크
@ResponseBody
@RequestMapping(value="userIdCheck", method = RequestMethod.POST, produces = "application/text;charset=utf8")
public String userIdCheckPOST(String us_id) {
logger.debug("userIdCheckPOST(String us_id)호출");
String result = "입력";
if(us_id == null || us_id.equals("")){ // 아이디 입력안함
logger.debug("입력 ? : " + result);
}else{
result = uService.userIdCheck(us_id);
logger.debug("result 값 체크 : " + result);
if(result == null || result.equals("")){ //중복 아이디 없음
result = "가능";
logger.debug("가능 ? : " + result);
}else { // 중복 아이디 있음
}
}
return result;
}
또한 ajax에서 dataType을 text로 지정해야한다.
// 아이디 중복체크
$('#us_id').blur(function(){
var us_id = $('#us_id').val();
$.ajax({
type : "post",
url : "../user/userIdCheck",
data : {"us_id" : us_id},
dataType : "text",
error: function(){
alert("아이디 중복체크 에러");
},
success : function(data){
console.log("받아온 데이터 : " + data);
if(data == "가능"){ // 사용가능한 아이디
$('#id_ok').css("display","block");
$('#id_no').css("display","none");
$('#us_pw').focus();
}else if(data == "입력"){ // 아이디 입력 안함
console.log("두번째");
$('#id_ok').css("display","none");
$('#id_no').text('아이디를 입력해주세요.');
$('#id_no').css("display","block");
}
else{ // 사용불가능한 아이디
console.log("세번째");
$('#id_ok').css("display","none");
$('#id_no').text('사용할 수 없는 아이디입니다.');
$('#id_no').css("display","block");
}
} // success 끝
}); // ajax 끝
}); // 아이디 중복체크 끝
이렇게 설정해주면
물음표로 표시되던 글자가 제대로 보인다.
참고한 글
AJAX 통신시 컨트롤러에서 한글 문자열을 리턴해야하는 경우 인코딩 문제 처리 :: 악덕고용주의 개발 일기 (tistory.com)
AJAX 통신시 컨트롤러에서 한글 문자열을 리턴해야하는 경우 인코딩 문제 처리
[ AJAX 통신시 컨트롤러에서 한글 문자열을 리턴해야할 경우 인코딩 문제 ] 자바스크립트에서 비동기로 ajax로 컨트롤러로 요청을 받아 db에서 값을 꺼내 문자열을 리턴할 경우, 한글 문자열을 리
rongscodinghistory.tistory.com
'웹 개발 > JavaScript & jQuery & JSTL' 카테고리의 다른 글
[JavaScript] replaceAll 한번만 치환될 때 모두 치환시키기 (0) | 2024.02.21 |
---|---|
[JSTL] data format 날짜 형식 변경하기 (0) | 2024.02.19 |
[jQuery] disabled 효과 적용 / 해제 (0) | 2024.02.14 |
[jQuery] value 값 가져오기 / 설정하기 (1) | 2024.02.14 |
[JavaScript] location을 이용하여 페이지 이동하는 방법 (0) | 2024.02.13 |