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

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
반응형
728x90

 

attr() : 문서 객체의 특정 속성값을 알아내거나 추가할 때 사용
attribute 속성
        // 메소드 체이닝 , 여러개의 속성
        $('input[password]').css('background','blue').css('color','blue');
        //객체로 넣어주는 방법, 여러개의 속성
        $('input[class~=text]').css({'background':'green','color':'red'});
        // Uncaught SyntaxError: Unexpected string 오류  - 키값잘못연결해서났음
        // $('input[size]').css('backgroundColor','green');
        $('input[class$=order]').css('backgroundColor','red');
        $('input[type=number]').attr('placeholder','폰번호');
        

        // 마우스 호버시 // 마우스 아웃시 -> 메소드 체이닝 가능
        $('input:image').mouseenter(function(){
            $(this).attr('src','../images/city1.png');
        }).mouseout(function(){
            $(this).attr('src','../images/river2.png')
        })
728x90
반응형
728x90

 

 

<jquery 연결방식 4가지>
1)jQuery 명시
2) $ 명시
3) jQuery 명시 + 생략 (다큐먼트부터 레디까지는 생략가능)
4) $ + 생략

 

<선택자 종류>
1) 전체 선택자 : *                          
2) 태그 선택자 :  <tag>                    
3) 아이디 선택자 :  #                      
4) 클래스 선택자 :  .                      
5) 자식선택자, 후손선택자 : >, (공백)        
6) 속성 선택자 : [ ]

 

 

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>01_JQuery_prac</title>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>


</head>
<body>


    <script>
    // $가 보이면 제이쿼리
    $(document).ready(function(){
        $('#ol-connect').css('backgroundColor','gray');
    });

    </script>

<h3>$(document).ready()</h3>
<p id="p-ready">
    페이지를 로드한 후 ready메소드 실행 = JavaScript의 window.onload()<br>
  
    ※ JS의 window.onload속성 vs Query의 $(document).ready() 차이 ※ 
    자바스크립트의 window.onload속성은 여러 개 설정 시 마지막에 쓴 것으로 덮어써짐<br>
    jQuery의 $(document).ready()는 여러 개 설정하면 모두 연달아 실행 <br>

</p>
    
    <script>

        // jquery 연결방식 4가지
        // 1)jQuery 명시
        jQuery(document).ready(function(){
            $('#p-ready').css('border','2px dashed blue');
        });

        // 2) $ 명시
        $(document).ready(function(){
            $('#p-ready').css('color','red');
        });

        // 3) jQuery 명시 + 생략 (다큐먼트부터 레디까지는 생략가능)
        jQuery(function(){
            $('#p-ready').css('font-weight','bold');
        });
        // 4) $ + 생략
        jQuery(function(){
            $('#p-ready').css('font-family','궁서체');
        });

    </script>



    <h2 >선택자와 메소드</h2>
    <p>선택자를 지정하고 메소드를 통해 jQuery적용<br>

        <br>선택자 종류<br>
        1) 전체 선택자 : *                          <br>
        2) 태그 선택자 :  <tag>                     <br>
        3) 아이디 선택자 :  #                       <br>
        4) 클래스 선택자 :  .                       <br>   
        5) 자식선택자, 후손선택자 : >, (공백)        <br>
        6) 속성 선택자 : [ ]                        <br>   


    </p>
    <div>
      <ul>
         <li>치킨</li>
         <li>불고기 피자</li>
         <li>치즈 피자</li>
         <li>파인애플 피자</li>
         <li>콤비네이션 피자</li>
      </ul>
      <h3>KH피자#</h3>
    </div>
   
    <label style="border: dashed;">이름 : </label><input type="text" id="name" name="name" class="order"><br>

    <label>주문 비밀번호 : </label><input type="password" id="pwd" name="pwd" class="order important"><br>

    <label>핸드폰번호 : </label>
    <input type="number" name="number1">-<input type="number" name="number2">-<input type="number" name="number3"><br>

    <label>주소 : </label>
    <input type="text" id="addr" name="addr" class="order" size=80><br>

    <label>치킨 주문 : </label>
    <input type="text" id="chicken" class="order" list="chickenList">
    <datalist id="chickenList">
        <option value="original">후라이드 치킨</option>
        <option value="source">양념 치킨</option>
        <option value="half">후라이드 반 양념 반</option>
    </datalist><br>

   <label>피자주문 : </label>
   <input type="checkbox" name="pizza">불고기 피자 &nbsp;&nbsp;
   <input type="checkbox" name="pizza">치즈 피자 &nbsp;&nbsp;
   <input type="checkbox" name="pizza">파인애플 피자 &nbsp;&nbsp;
   <input type="checkbox" name="pizza">콤비네이션 피자 <br>
   
   <label>일회용품 : </label>
   <input type="radio" name="product1" id="need" checked>필요함 &nbsp;&nbsp; 
   <input type="radio" name="product1" id="noneed">필요하지 않음<br>
   
   <label>파일 : </label><input type="file"><br>
   <label>이미지 : </label><input type="image" src="../images/flower1.PNG" height="200px"><br>
   

   <br>
   
   <input type="button" value="클릭">
   <input type="submit" value="제출">
   <input type="reset" value="리셋"><br>
   <input type="text" disabled><input type="button" value="비활성화" disabled>
   
   <br><br>
   
   <table>
      <tr><th>이름</th><th>혈액형</th><th>고향</th></tr>
      <tr><td>강건강</td><td>B형</td><td>광주</td></tr>
      <tr><td><a>남나눔</a></td><td>AB형</td><td>담양</td></tr>
      <tr><td><a href="#">도대담</a></td><td>A형</td><td>서울</td></tr>
      <tr><td>류라라</td><td>B형</td><td>천안</td></tr>
      <tr><td>문미미</td><td>O형</td><td>서울</td></tr>
      <tr><td>박보배</td><td>A형</td><td>담양</td></tr>
      <tr><td colspan="2">총원</td><td>6</td></tr>
   </table>   


   

   <script>
        $(function(){
            // 선택자 종류
            // 1) 전체 선택자 : *
            // 2) 태그 선택자 :  <tag>
            // 3) 아이디 선택자 :  # 
            // 4) 클래스 선택자 :  .
            // 5) 자식선택자, 후손선택자 : >, (공백)
            // 6) 속성 선택자 : [ ]


            // 1)전체선택자 : *
            // $('*').css('color','white'); // 다 화이트로 바뀜
            // css() : 스타일 적용 & 확인가능. 문서 객체의 스타일을 검사하거나 변경할 때 사용
            // 스타일 검사? 의미?

             console.log($('*').css('font'));   // 16px "Malgun Gothic"
          
            // 2) 태그 선택자 :  <tag>
            // 여러개 지정 가능. 쉼표로 잇기
            // $('li').css('backgroundColor','#f05515');
            // $(document).ready(function(){
            //     $('li').css('background','#ff0');   //  $(document).ready() 적용
            }).css('backgroundColor','blue');
            jQuery(document).ready(function(){      //  jQuery(document).ready() w적용
                $('p').css('font','20px bold');
            });
            $('p,h3').css('font-size','20px');
            jQuery(document).ready(function(){
                $('td').css('font','30px bold','color','white');
            })
            


            
            // 3) 아이디 선택자 :  # 
     

            // attr() : 문서 객체의 특정 속성값을 알아내거나 추가할 때 사용 
            // css처럼 어떤 값을 지정할 수 있지만 속성 이름만 가지고 불러올 수 있는 것처럼
            // 얘도 지정할 수 있지만 불러올 수도 있음


            console.log($('#name').attr('placeholder'));// 아이디를 지정하세요 // 어떤값들이 있는가 조회 한 것
            console.log($('#name').attr('id'));   // name -> id 속성의 밸류값을 알려줌 : id="name"
            console.log($('#name').attr('type')); // text -> type속성의 밸류값을 알려줌 : type="text"
            console.log($('#name').attr('size')); // undefined 없는속성가져오면뜸 // undefined : 없는 속성인데 호출하면 undefined 뜸
            
            
            $('input:checkbox').prop('checked', true);  

            $('#name').attr('size',50);    // size 추가 
            $('#name').attr('style','display inline-block');    // size 추가 
            $('#name').attr('width','500');    // size 추가 
            $('#name').attr('onclick');    // input태그가 아니라 안먹힘
            $('#name').attr('style','border dashed');    // worked
            $('#name').removeAttr('width');


            // //.removeAttr() : 속성 삭제
            $('#name').removeAttr('size');  // size 삭제 
               
           
            // 4) 클래스 선택자 :  .
            $('.order').css('color','green');
            $('.order').css('border','5px groove');
            
            $('.order.important').css('background','rgba(0,0,255,0.1)'); // class="order important" 한줄에만 적용 // class 두개 선언됨

            $('.order').css('background','rgba(0,0,255,0.9)');      // class="order"와 class="order important" 포함하여 둘 다 적용
            $('.order.important').css('background','tomato');    // 윗줄에서 order들어간 클래스 전부 파란색으로 바뀌었다가 class="order important"줄만 토마토색으로 다시 overwrite
            

            // 5) 자식선택자, 후손선택자 : >, (공백)
            $('div>h3').css('border','dashed');     // div(미포함) 아래 h3인 KH피자에 적용
            $('div h3').css('border','dashed 5px'); // div(미포함) 아래 h3인 KH피자에 적용
            $('div ul').css('border','dashed 5px'); // div(미포함) 아래 h3와  ul(포함) 아래 li까지 적용
            
            $('div li').css('background','tomato');  // div(미포함) 아래 h3와  ul(포함) 아래 li까지 적용
            $('div>h3').css('color', 'brown');
            $('div li').css('color', 'orange'); // js와 동일


            
            // 6) 속성 선택자 : [ ]
            $('input[size]').css('background','yellowgreen');
            $('input[type=number]').attr('placeholder','번호 필수 입력');
            $('input[class~=important]').val('12345');  // ~= : important 포함해야하는데 구분자가 존재하기에 띄어쓰기로 구분했을 때 임포턴트가 들어가 있어도 조건에 부합
            // val() : value에 값을 설정하거나 value 값을 확인할 때 사용 (= js의 value랑 동일)
                
            console.log($('input[class~=important]').val());

            // *= : 특정값을 포함하는 것에 조건 적용
            // ^= : 특정값으로 시작하는 것에 조건 적용
            // $= : 특정값으로 끝나는 것에 조건 적용        
            $('input[name*=d]').css('background','pink');           // 특정값을 포함하고있는거 다 , d라는게 안에 들어가있는 
            $('input[name^=n]').css('background','skyblue');        // n으로 시작하는것
            $('input[name^=der]').css('background','rgba(0,100,0,0.1)');    // der로 끝나는것
            

            $('input:text').css('background', 'white');         // 'input:text'       input type이 text인것
            $('input:password').css('background', 'gold');  // 'input:password'   input type이 password인것   
            $('input:checkbox').prop('checked', true);      // 'input:checkbox'
            // prop() : 속성값의 여부를 true/ false로 설정하거나 알아냄
        

    });
    </script>
728x90
반응형

+ Recent posts