본문 바로가기
JAVA/jQuery,Ajax

Ajax 값 공백으로 넘어 올 때 처리하기 + 아이디 중복체크 $.parseJSON()사용

by java나유 2022. 8. 22.

Ajax사용하여 아이디중복체크를 구현했는데

문제가 발생했다.

success:function($data)

부분의 $data가  "                                "no"" 이런식으로 앞에 공백값이 찍히는것이다...

엔터값없이 다른 소스들을 다 붙여보아도 공백의 길이만 줄어들 뿐 공백이 사라지진 않았다.

 

이럴 때 해결방법은..

배열로 담아서 보내버리기!

 

 

아이디 중복 체크.jsp 에 

 

JSONArray ja = new JSONArray();
ja.add(result);
out.print(ja.toJSONString()); 배열로 전송한다.

try {
ps = con.prepareStatement(sql_Select);
rs = ps.executeQuery();
if (rs.next() == true) {
	result="no";
} else {
	result="ok";
}
// JSONObject(키값, 데이터), JSONArray(응답만 받을 때)
JSONArray ja = new JSONArray();
ja.add(result);
out.print(ja.toJSONString()); //배열로 전송
} catch (Exception e) {
	out.print("오류");
}

 

사용자 메세지 출력.jsp (Ajax로 값 넘기고 받기)

 

그리고 Ajax success 부분에서 

var $j = $.parseJSON($data); 

$.parseJSON = JS(JSON.parse)
if($j[0]=="no")

같이 배열로 받아서 출력한다.

//중복체크
	$(function() {
	$("#UserIDck").click(function () {
	let $ID = $("#UserID").val(); 
		if($ID == ""){
			alert("아이디를 입력해주세요");
		}
		else{
			$.fn.idcheck($ID);
			//location.href="./add_masterIDCK.jsp?ID="+ $ID;
		}
	});
	$.fn.idcheck=function($ID){
		$.ajax({
			url:"add_masterIDCK2.jsp",
			cache:false,
			type:"POST",
			data:{"ID":$ID},
			dataType:"text",
			enctype:"application/x-www-form-urlencoded",
			success:function($data){
				console.log($data);
				var $j = $.parseJSON($data); // $.parseJSON = JS(JSON.parse)
				//if($j[0]=="no"){
				if($j[0]=="no"){
					alert("중복된 아이디입니다.");
				}
				else{				
					alert("사용가능한 아이디입니다.");
					$("#UserID").attr("readonly",true);	
					$("#hidden").val($data);	
				}
			},
			error:function(){
				console.log("통신오류발생~!");
			}		
		});
	}
	});

 

728x90

댓글