본문 바로가기
JavaScript

[ajax] ajax 화면을 그려내고 나중에 내용 포함시키는 예제

by solbangool 2023. 11. 6.
728x90
반응형

ajax

Asynchronous Javascript and XML

: 비동기적으로 데이터를 전송하고 받아오기 위해서 사용

 

특정요소에 데이터 불러와서 표시하기

${"요소"}.load();

 

ajax()

: http 프로토콜을 이용해서 데이터를 전송하고 데이터를 text나 json 형태로 받아오는 함수

$.ajax({
	url :"전송 url",
	type:"전송방식 [get|post]",
	data:"전송할 데이터",
	dataType:"요청 데이터 타입(html, text,json,xml)",
	success:function(result){
		//요청 성공시, 실행하는 함수
		//결과를 파라미터로 받아올 수 있음
		//이것을 적지 않으면 결과를 받아올 수 없음
	},
	error:fuction(){
		//요청 실패시, 실행하는 함수
	},
});
 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" 
	integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" 
	crossorigin="anonymous"></script>
	
<script type="text/javascript">
	var name = "solvely";
	function doAjax() {
		$.ajax({
			url:"hello",
			data:{"name":name},
			type:"post",
 			dataType : "json",
			success:function(result){
				alert(result.msg);
				$("#title").text(result.msg);
			},
			error:function(request, status,error){
				alert("request : "+request
						+"status : "+status
						+"error : "+error);
			}
		});		
	}
</script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<h1 id="title"></h1>
	<button onclick="doAjax()">요청</button>
</body>
</html>
 
body 부분에 작성한 내용이 먼저 화면에 출력되고,

요청 버튼을 클릭하면 doAjax 함수가 실행되면서 ajax 안에 넣은 내용이 실행된다

 

ajax 내부에서 url을 hello로 설정했기 때문에, hello서블릿으로 요청이 넘어감!

@WebServlet("/hello")
public class helloServlet extends HttpServlet{

	public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		1) System.out.println("hello 요청 받음");
		req.getRequestDispatcher("01ajaxEx.jsp").forward(req, resp);
		
		2) String name = req.getParameter("name");
		System.out.println("name : "+name);
		resp.getWriter().print("Hello! Ajax!!");

		3) String data= "{\"msg\":\"Hello! Ajax!!\"}";
		resp.getWriter().print(data);
		}
}

json 형태로 넘겨야 alert 메시지도 정상적으로 출력된다

msg가 key 값이고, hello ajax 부분이 value 값이라고 적어뒀는데 역시 아직 어려움 ㅠ-ㅠ...


ajax 활용한 회원가입 체크.

아이디 사용 가능 여부와 이메일 사용 가능 여부를 확인하는 코드

 

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

<!DOCTYPE html>
<html>
<head>
<script src="https://code.jquery.com/jquery-3.3.1.min.js" 
	integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" 
	crossorigin="anonymous"></script>
	
	<script type="text/javascript">
 	$(function(){
 		$("#myForm").on("submit",function(){
 			var d = $(this).serialize();
 			$.ajax({
 				url:"form",
 				type:"get",
 				data:d,
 				success: function(){
 				}
 			});
 			return false; //submit 진행을 멈춤
 		});
		
 		$("#userid").on("blur",function(){
 			$.ajax({
 				url:"check",
 				type:"post",
 				data : {"userid":$(this).val()},
 				dataType:"json",
 				success: function(data){
				if(data.result){
					$("#idresult").text("사용 가능한 아이디입니다.");
				}else{
					$("#idresult").text("사용 중인 아이디입니다.");
				}
 				}
 			});
 		});
 		
 	});
 	
 	
	</script>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="hello" id="myForm">
			id : <input type="text" name="id" id="userid"><br>
			<div><small><span id="idresult"></span></small></div>
			name : <input type="text" name="name"> <br>
			email : <input type="text" name="email"> <br>
		<input type="submit" value="등록">
	</form>
</body>
</html>
 
 
 

 

입력창에 사용자가 입력한 아이디가 사용 가능한 아이디인지 확인하는 코드!

form 요소 데이터를 전송하기 위해 ajax를 사용한다!

 

데이터 값을 넘기기 위해 id를 각각 가지고 있어야 하고,

submit 이벤트 발생하면 ajax가 데이터 전송하는 코드이다

 

.serialize()는 준 URL 인코딩 표기법으로 텍스트 문자열을 만들어준다

한마디로 form의 데이터를 전송 가능한 형태로 만들어준다는 뜻!

 

 
 

return false가 없으면, 등록 버튼을 누르는 순간 입력한 데이터가 사라지고 새로운 페이지가 로딩됨

ajax 화면을 그려내고 나중에 내용 포함시키는 예제

반응형

댓글