JavaScript

[JQuery] Ajax + JSON으로 데이터 보내기

로니콜먼 2020. 8. 10. 14:52

Ajax 기본 형식을 알아두면 어디든 쓰인다

$(document).ready(function(){
		$('#checkOut').on("click", function(){
			var adminFile = {
				"TMPLAT_ID" : robot.sysdate("PR05"),
				"TMPLAT_DVS_CD" : $('select[id="tmplat_dvs_cd"]').val(),
				"TMPLAT_NM" : $('#tmplat_nm').val(),
				"TMPLAT_COURS" : $('#tmplat_cours').val(),
				"OBJCT_USE_YN" : $('input[name="objct_use_yn"]:checked').val(),
				"TMPLAT_CTNT" : $('#tmplat_ctnt').val()
			}
			
			$.ajax({
				url : "/adminDevFile.do",
				type : "POST",
				data : JSON.stringify(adminFile),
				dataType : "text",
				contentType: "application/json",
				success : function(data){
					if(data == 'success'){
						alert('등록 성공');
                        document.location.reload();
					}else if(data == 'fail'){
						alert('등록 실패. 내용을 확인해주세요');
					}
				},
				error : function(){
					alert('통신 실패');
				}
			});
			
		});
	})

adminFile이라는 변수를 선언해서 JSON형식으로 데이터를 담아준다.

다음 비동기 통신인 Ajax을 이용해서 데이터를 전송한다.

 

- url : 데이터를 보낼 url

- type : 데이터를 전송할 타입(GET, POST,..)

- data : 보낼 데이터

- dataType : 결과를 받을 데이터 형식

- contentType : 보낼 데이터 형식

- success : 성공 시 처리할 내용

- error : 실패 시 처리할 내용

 

JSON으로 데이터를 보낼 땐 JSON 형식인 데이터를 String 형태로 변환시켜 보낸다.

자바스크립트가 아닌 컨트롤러로 데이터를 보내기 때문이며,

자바스크립트가 아닌 다른 언어와의 통신에서는 반드시 JSON.stringify()를 사용해야 한다.

 

자바스크립트가 아닌 언어에서도 JSON을 충분히 다룰 수 있어서

데이터 교환 목적으로 많이 사용된다.

 

데이터 전송 성공 이후 success 함수안에 document.location.reload(); 를 통하여

입력했던 값을 초기화 할 수 있다.

@RequestMapping(value = "/adminDevFile.do")
	@ResponseBody
	public String adminDevFile(@RequestBody Map<String, Object> paramMap, HttpSession session) {
		
		paramMap.put("CRTR_ID", session.getAttribute("userId"));
		int check = view020101Service.adminDevFile(paramMap);
		
		if(check > 0) {
			return "success";
		}else {
			return "fail";
		}
		
	}

컨트롤러에서 보낸 JSON데이터를 받는 방법은 위와 같다

 

@ResponseBody 어노테이션을 붙이면 리턴되는 값이 View를 통해 출력되지 않고,

HTTP Response Body에 직접 쓰여지게 된다. 

 

스프링에서는 위 방식을 통해 Ajax통신을 한다.

(데이터만 주고받는 용도의 Controller인 경우 @RestController를 사용하기도 한다)

 

그러고나서 매개변수로 String화 되어있는 JSON데이터를 받아오는데

데이터가 많은 경우 Map을 사용하면 매우 유용하다

 

@RequestBody어노테이션을 붙여주면 간단하게 Map을 통해 JSON데이터를 받아올 수 있다.

 

여기까지 JQuery를 이용한 비동기 통신 Ajax에 대해 알아보았다.