728x90

 

 

jQuery ajax 

아이디 중복 유효성 검사

<%@ page language="java" contentType="text/html; charset=UTF-8"
		pageEncoding="UTF-8"%>
		
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">

<title>prac</title>



</head>
<body>

	<jsp:include page="../common/menubar.jsp"/>
	
	<h1 align="center">회원가입</h1>
	
	<div class="centerText">
		<form action="minsert.me" method="post" id="joinForm">
			<table>
				<tr>
					<th>* 아이디</th>
					<td>
						<input type="text" name="id" id="userId">
						<span class="guide ok"> 사용 가능 아이디</span>
						<span class="guide error"> 사용 불가능 아이디</span>
						<input type="hidden" id="idDuplicateCheck" value="0"/>
					</td>
				</tr>
				<tr>
					<th>* 이름</th>
					<td><input type="text" name="name"></td>
				</tr>
				<tr>
					<th>* 비밀번호</th>
					<td><input type="password" name="pwd"></td>
				</tr>
				<tr>
					<th>* 비밀번호 확인</th>
					<td><input type="password" name="pwd2"></td>
				</tr>
				<tr>
					<th>닉네임</th>
					<td><input type="text" name="nickName"></td>
				</tr>
				<tr>
					<th>성별</th>
					<td>
						<input type="radio" name="gender" value="M">남
						<input type="radio" name="gender" value="F">여
					</td>
				</tr>
				<tr>
					<th>나이</th>
					<td><input type="number" name="age" min="20" max="100"></td>
				</tr>
				<tr>
					<th>이메일</th>
					<td><input type="email" name="email"></td>
				</tr>
				<tr>
					<th>전화번호</th>
					<td><input type="tel" name="phone"></td>
				</tr>
				<tr>
					<th>우편번호</th>
					<td>
						<input type="text" name="post" class="postcodify_postcode5" value="" size="6">
						<button type="button" id="postcodify_search_button">검색</button>
					</td>
				</tr>
				<tr>
					<th>도로명 주소</th>
					<td><input type="text" name="address1" class="postcodify_address" value=""></td>
				</tr>
				<tr>
					<th>상세 주소</th>
					<td><input type="text" name="address2" class="postcodify_extra_info" value=""></td>
				</tr>
				
				<!-- jQuery와 Postcodify를 로딩을 위한 스크립트 -->
				<script src="//d1p7wdleee1q2z.cloudfront.net/post/search.min.js"></script>
				<script>
				// 검색 단추를 누르면 팝업 레이어가 열리도록 설정함
					$(function(){
						$("#postcodify_search_button").postcodifyPopUp();
					});
				</script>
				
				<tr>
					<td colspan="2" align="center">
						<button onclick="return validate();">가입하기</button>
						<input type="reset" value="취소하기"> <!-- 인풋 리셋은 name속성 필요없이 value에 텍스트나타나게 -->
						<button type="button" onclick="location.href='home.do'">시작 페이지로</button>
					</td>
				</tr>
			</table>
		</form>
	</div>




	<script>
		${'#userId'}.on('keyUp',function(){
			var userId = $(this).val().trim(); /* trim() : 앞뒤 공백제거 */
			
			if(userId.length > 4){ // 변수명.length
				$('.guide').hide();
				$('#idDuplicateCheck').val(0);
				return;
			}
			
			$.ajax({
				url:'dupId.me',
				date:{id:userId},
				success:function(data){
					console.log(date);
					
					if(data == 1){
						$('guide.error').show();
						$('guide.ok').hide();
						$('#idDuplicateCheck').val(0);
					}else{
						$('.guide.error').hide();
						$('.guide.ok').show();
						$('#idDuplicateCheck').val(1);
					}
				},
				error:function(data){
					console.log(date);		
				}
				
			});
		});
	
		function validate(){
			if($('#idDuplicateCheck').val() == 0){ // 유효성 검사로 중복아이디면 밸류값이 0
				alert('사용 가능한 아이디를 입력해주세요');
				$('#userId').focus(); // 아이디 입력하고 입력창으로 포인터 이동시키는 .focus()
				return false;
			}else{
				${'#joinForm'}.submit(); // .submit() : 폼태그 submit시키는 코드
			}
		}
		
	</script>


</body>
</html>

 

728x90
반응형
728x90

 

상당히 복잡한...

복붙해도 써도 되겠지만 안에 메커니즘을 이해하기 위해

손코딩 반복해보자

 

<h2>1.서버 쪽 컨트롤러로 값 보내기</h2>
    <button id="test1">테스트</button>
    <script>
        $('#test1').on('click',function(){
            $.ajax({

                url: 'test1.do',
                data:{name:'강건강', age:20},
                type: 'post',
                success: function(data){
                    console.log(data);
                    if(data = 'ok'){
                        alert('전송 성공');
                    }else{
                        alert('전송 실패');
                    }
                },
                error: function(data){
                    console.log(data);

                }
            });
        });
    </script>

 

728x90
반응형
728x90

 

 

jQuey의 Ajax 속성

 

url : request해서 데이터 전송할 url

data : 서버로 전송할 데이터의 parameter 설정값

datatype : 서버의 response 데이터의 형식(xml, text, json, html 등) 지정 값

 - 디폴트시 auto

success(data) : 통신 성공 시, 호술되는 함수 지정값. 파라미터로 response 데이터(data)를 받음

error : 통신 실패 시, 호출되는 함수 지정값. 역시 파라미터로 response  데이터(data)를 받음

complete : 통신 성패 여부 관계 없이 통신 실행완료 후 실행되는 함수 지정값

async : 비동기(true)/동기(false) 지정

 

 

728x90
반응형
728x90

jQuery 통하여 Ajax 구현

 

jQuey의 Ajax 속성

url : request해서 데이터 전송할 url

data : 서버로 전송할 데이터의 parameter 설정값

datatype : 서버의 response 데이터의 형식(xml, text, json, html 등) 지정 값

 - 디폴트시 auto

success(data) : 통신 성공 시, 호술되는 함수 지정값. 파라미터로 response 데이터(data)를 받음

error : 통신 실패 시, 호출되는 함수 지정값. 역시 파라미터로 response  데이터(data)를 받음

complete : 통신 성패 여부 관계 없이 통신 실행완료 후 실행되는 함수 지정값

async : 비동기(true)/동기(false) 지정

 

3.서버 기본 전송 값에서 결과로 str 받아처리하기

<script>
		// 더하기 버튼을 누르면 첫번째 숫자의 값과 두번째 숫자의 값을 ajax를 통해 jQuery3.do쪽으로 전송하는 코드 작성
		$('#plusBtn').click(function(){
			var n1 = $('#firstNum').val();
			var n2 = $('#secondNum').val();
			
			$.ajax({
				url: 'jQueryAjax3',
				data: {n1:n1, n2:n2},
				type: 'post',
				datatype: 'text',
				success: function(data){
					console.log('전송 성공');
					console.log("받아온 data값 = " +data);
				},
				error: function(data){
					console.log('전송 실패');
				},
				async: true
			});
		});
	</script>
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		int n1 = Integer.parseInt(request.getParameter("n1"));
		int n2 = Integer.parseInt(request.getParameter("n2"));
	
		int sum = n1 + n2;
		
		response.getWriter().print(sum);
		
	}

 

 

 

4. 객체형태 데이터를 서버에 전송하고 서버에서 처리하기

 

<h3>4. Object형태의 데이터를 서버에 전송, 서버에서 데이터 처리 후 서버 console로 출력</h3>
	<!-- 여기서 말하는 콘솔은 이클립스 콘솔을 의미함 -->
	학생1 : <input type="text" id="student1"><br>
	학생2 : <input type="text" id="student2"><br>
	학생3 : <input type="text" id="student3"><br>
	<button id="studentTest">결과확인</button>
	<script>
		// 결과확인 버든을 누르면 학생1, 학생2, 학생3의 이름이 jQuery4.do 쪽으로 전송
		// 전송된 학생들의 이름은 서버의 console창에 아래 예시와 같이 출력되고
		// 화면에서는 "전송 성공"이라는 알람창이 뜸
		// console 출력 예시 : 수업을 들을 하생은 ooo,xxx,ㅁㅁㅁ입니다
		$('#studentTest').on('click',function(){
			var student1 = $('#student1').val();
			var student2 = $('#student2').val();
			var student3 = $('#student3').val();
			
			$.ajax({
				url:'jQueryAjax4',
				data: {student1:student1, student2:student2, student3:student3},
				type: 'post',
				/* datatype: 'text', */
				success:function(data){
					alert('전송 성공');	
				},
				error: function(data){
					alert('fail');
				},
				complete: function(){
					alert('another func');
				},
			});
		
		});
	</script>​

 

		request.setCharacterEncoding("UTF-8");
		
		String s1 = request.getParameter("student1");
		String s2 = request.getParameter("student2");
		String s3 = request.getParameter("student3");
		
		System.out.printf("이름 출력 %s, %s, %s",s1,s2,s3);

 

728x90
반응형
728x90

jQuery 통하여 Ajax 구현

 

jQuey의 Ajax 속성

url : request해서 데이터 전송할 url

data : 서버로 전송할 데이터의 parameter 설정값

datatype : 서버의 response 데이터의 형식(xml, text, json, html 등) 지정 값

 - 디폴트시 auto

success(data) : 통신 성공 시, 호술되는 함수 지정값. 파라미터로 response 데이터(data)를 받음

error : 통신 실패 시, 호출되는 함수 지정값. 역시 파라미터로 response  데이터(data)를 받음

complete : 통신 성패 여부 관계 없이 통신 실행완료 후 실행되는 함수 지정값

async : 비동기(true)/동기(false) 지정

 

 

1.버튼 누르면 전송값을 서버에 출력하기

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script src="js/jquery-3.6.0.min.js"></script>

<title>Insert title here</title>

<style>.test{width:300px; min-height:50px; border:1px solid red;}</style>

</head>
<body>
	
	<h1>jQuery-Ajax구현</h1>
	
	<h3>1.client가 server에 requset</h3>
	이름 : <input type="text" id="myName">
	<button id="nameBtn">전송</button>
	<script>
		$('#nameBtn').on('click',function(){
			var userName = $('#myName').val();
	        
			$.ajax({
	        	url: 'jQueryAjaxServlet1',
	        	type: 'get',
	            data: {userName:userName},
	            success: function(){
	            	alert('전송 성공');
	            },
	            error: function(){
	            	alert('전송 실패');
	            },
	            complete: function(){
	            	alert('성공실패 상관없이 무조건 실행되는 complete');
	            }
			});
		});

	</script>
	
	
</body>
</html>
@WebServlet("/jQueryAjaxServlet1")
public class JQueryAjax1 extends HttpServlet {
	private static final long serialVersionUID = 1L;

    public JQueryAjax1() {
        super();
    }
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		System.out.println("서블릿도착");
		
		String name = request.getParameter("userName");
		System.out.println(name);	
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

 

 

2.버튼 누르면 서버에서 보낸 값을 사용자가 수신하기

 

<h3>2.버튼 선택 시, 서버에서 보낸 값 사용자가 수신</h3>		<!-- 서버가 클라이언트에 response -->
	<button id="getServerTextBtn">서버에서 보낸 값 확인</button>
	<p class="test" id="p1"></p>
	<script>
$('#getServerTextBtn').click(function(){
			$.ajax({
				url:'jQueryAjax2',
				// data : 서버에서 사용자에게 보낼 데이터가 없으므로 기술x
				type : 'get',
				success: function(data){
					alert('성공');
					console.log(typeof data);
					$('#p1').text(data);
				},
				error: function(){
					alert("에러 발생");	
				},
				complete: function(){
					alert('comeplete work');
				}
			});
		});
	</script>

 

response.getWriter().print("서버에서 전송한 데이터 입니다");

 

728x90
반응형

+ Recent posts