ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ajax] 비동기 form 사용하기
    JAVA 2021. 8. 16. 22:24

    ajax와 form


    ajax 는 비동기가 기본값이지만

    form 은 기본값이 동기(submit)이기 때문에

     

    form 의 onsubmit 에 ajax 함수를 적용하고 싶을 때

    1. 마지막에 return false 를 선언해준다.

     

    그럼 submit 동기처리는 비활성화 되며 ajax 비동기처리만 가능하게 할 수 있다.

     

    만약 ajax의 결과에 따라 동기식으로 처리해야 한다면

     

    2. location.href 로 요청명을 기입해주면 된다.

     

    아래 예시

     

    <script type="text/javascript">
    	function check(){
    		if(document.loginForm.id.value==''){
    			alert('ID를 입력하세요')
    			document.loginForm.id.focus();
    			return false;
    		}
    		
    		if(document.loginForm.pw.value==''){
    			alert('비밀번호를 입력하세요')
    			document.loginForm.pw.focus();
    			return false;
    		}
            var form_data = "id="+$('#id').val()+"&pw="+$('#pw').val()
    		
    		//Ajax
    		$.ajax({
    			type:"POST",
    			url:"loginCheck",
    			data: form_data,//서버로 넘길 인수값
    			dataType: "JSON",
    			success:function(data){
    				if(data.check==1){
    					alert('로그인 되었습니다.');
    					location.href="boardList"//로그인 성공시 동기처리를 위해 location.href
    				}else if(data.check==-1){
    					//사용중인 ID
    					alert('가입하지 않은 아이디이거나, 잘못된 비밀번호입니다.');
    				}
    			},//success-end
    			error:function(){
    				alert('연결이 원활하지 않습니다.');
    			}
    		});
            
    		return false;//기본적으로 false를 선언해 동기처리 막기
    	}
    	
    </script>
    
    </head>
    <body>
    	<h2>로그인</h2>
    	
    	<form name="loginForm" method="post" onsubmit="return check()">
    		<table border="1">
    			<tr>
    				<td>ID</td>
    				<td><input type="text" name="id" id="id" size="20"></td>
    			</tr>
    		
    			<tr>
    				<td>비밀번호</td>
    				<td><input type="password" name="pw" id="pw" size="20"></td>
    			</tr>
    			
    			<tr>
    				<td colspan="2" align="center">
    					<input type="submit" value="로그인">&nbsp;
    					<input type="button" value="회원가입" onclick="location.href='joinForm'">
    				</td>
    			</tr>
    		
    		</table>
    	
    	</form>
    	
    </body>

    댓글

Designed by Tistory.