JavaScript

회원가입_이메일 중복확인 구현 ajax/javascript

연어먹고싶음ㅁ 2022. 3. 13. 21:00

개인 복습,기록용

 <div class="form-group row">
        <div class="col-sm-6 mb-3 mb-sm-0">
                <input type="email" class="form-control form-control-user" id="email"
                name ="email"   placeholder="이메일">
                <p id="emailContent">4-12자/영문 소문자(숫자 조합 가능)</p>
       </div>
       <div class="col-sm-6">
                 <input type="button" class="form-control form-control-user"
                 id="emailCk" value="이메일 중복 확인" onclick="popup();" >
                  <input type= "hidden" id ="emailcheck" name="emailcheck">
                                    
         </div>
 </div>

html 부분

1. 이메일 중복 확인 버튼에 onclick을 걸어둔다 

2. 중복확인 여부를 확인 할 수 있게 input type="hidden" 으로 숨겨둔다. 

 

 

function popup(){
			var userid = $("#email").val();
			var regEmail = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/;
			if(userid.length<1){
				alert("이메일을 입력하세요.");
				
			}else if(!regEmail.test(userid)){
				alert("이메일 형식이 아닙니다.");
			}else{
				$.ajax({
					url : "/admin/member/check-email",
					type : "post",
					dataType : "json",
					data : {"email" : $("#email").val()},
					success : function(data){
						if(data>0){
							$("#emailContent").html('존재하는 이메일입니다. 다시 입력해주세요.');
							$("#emailContent").css('color','red');
							$("input[name=emailcheck]").val('');
						}else{
							$("#emailContent").html('사용가능 한 이메일입니다.');
							$("#emailContent").css('color','blue');
							$("input[name=emailcheck]").val('y');
						}
					}
					
				})
				
			}
			
		}

javascript > jquery 부분

 

3. 이메일 값이 제대로 입력된것을 확인하면 ajax로 작성한 email란에 작성했던 email값을 넘긴다. 

4. url은 controller에서 설정한 api로 기재한다.

 

@ResponseBody
@PostMapping("check-email")
public int register(@RequestParam String email) throws Exception {
		log.info("아이디 중복 확인, email = {}",email);
		Integer result = memberService.checkEmail(email);
		
		return result;
}

Controller 코드

*ajax에서 type : post로 넘겼으니 PostMapping으로 받는다. 

 

@Override
public Integer checkEmail(String email) {
		log.info("아이디 중복 확인(serviceImpl)");
		
		return memberDao.checkEmail(email);
}

Service 코드

 

//이메일 중복 확인 
Integer checkEmail(String email);

Mapper interface 코드

 

<select id = "checkEmail" parameterType="string" resultType="integer">
		select count(*) from adminMember
		where email = #{email}
</select>

mapper.xml 코드