Ajax 사용방법
2021. 11. 26. 09:14ㆍJQuery
// 방법1 예전방식 $.ajax({ url: "/send", // 데이터를 요청할 url type: "GET", // GET, POST, DELETE, PATCH, PUT 등 data : data, // 보내고 싶은 데이터를 JSON 형식으로 작성 success: function(result){ // 요청에 성공했을때 실행되고 서버에서 받은 데이터를 확인할수 있다 console.log(result); }, error: function(){ console.log("에러발생"); } }) // 방법2 추천방식 $.ajax({ url: "/send", type: "GET", data : data, }) .done(function(result){ // 요청에 성공했을때 실행 console.log(result); }) .fail(function(){ console.log("에러발생"); })
컨트롤러에서 데이터 받기
html, js
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> </head> <body> <span>에이작스 테스트</span> <input type="text" class="name"> <button>전송</button> <script> $("button").click(function(){ const data = { name : $(".name").val() }; $.ajax({ url: "/send", type: "GET", data : data, }) .done(function(result){ console.log(result); }) .fail(function(){ console.log("에러발생"); }) }) </script> </body> </html>
컨트롤러
@Controller public class AjaxTest { @GetMapping("/ajaxTest") public String ajaxTest() { return "ajaxTest"; } // ajax 요청을 받는곳 @ResponseBody @GetMapping("/send") public String send(String name) { System.out.println("name = " + name); return "안녕하세요 " + name + "님"; // throw new NullPointerException(); } }
Mapping을 ajax type과 맞춰주고 @ResponseBody를 붙여준다
컨트롤러는 요청이 들어오면 return 값을 viewResolver로 전달 => 알맞는 화면을 보여주는데
@ResponseBody 어노테이션을 붙이면
return 값을 MessageConerveter로 전달 => 값이 String이면 String으로 객체이면 JSON으로 변환후 응답해준다
String으로 return 했을때

Object로 return 했을때
@ResponseBody @GetMapping("/send") public Map<String, String> send(String name) { Map<String, String> map = new HashMap<>(); map.put("msg1", "안녕하세요1"); map.put("msg2", "안녕하세요2"); map.put("msg3", "안녕하세요3"); return map; }

배열을 서버로 전달하고 싶을때는 traditional : true 를 추가해주면 된다
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> </head> <body> <span>에이작스 테스트</span> <input type="text" class="name1"> <input type="text" class="name2"> <input type="text" class="name3"> <button>전송</button> <script> $("button").click(function(){ const data = { name : [ $(".name1").val(), // 안녕하세요 $(".name2").val(), // 테스트 $(".name3").val() // 입니다 ] }; $.ajax({ url: "/send", type: "GET", data : data, traditional : true // 추가 }) .done(function(result){ console.log(result); }) .fail(function(){ console.log("에러발생"); }) }) </script> </body> </html>
컨트롤러
@ResponseBody @GetMapping("/send") public void send(String[] name) { System.out.println(Arrays.toString(name)); } // 결과 [안녕하세요, 테스트, 입니다]
'JQuery' 카테고리의 다른 글
선택된 input[type="checkbox"] 값 가져오기 (0) | 2021.11.24 |
---|---|
swal 사용방법 (0) | 2021.11.24 |
선택된 input[type="radio"] 값 가져오기 (0) | 2021.11.24 |