JS
AJAX parameter 타입 별 처리 방법
링규
2023. 2. 13. 16:09
POST
1. String, int, boolean 등 단일 변수를 전송할 때
$.ajax({
type: 'POST',
async: true,
url: "url주소",
data: {test: "test"},
success: function(response) {
alert(response.data);
},
error: function(error) {
console.log(error);
}
})
@ResponseBody
@RequestMapping(value = "/{workspace}/system/control/testMethod", method = RequestMethod.POST, produces = "application/json;charset=utf8")
public String testMethod(String test)
{
try {
return test;
} catch (Exception e) {
e.printStackTrace();
return "false";
}
}
간단하게 파라미터로 변수를 받아주면 끝
2. 여러 변수들을 받을 때
2-1) 따로 따로 받기
$.ajax({
type: 'POST',
url: "url 주소",
data: {fruit: "grape", box: 2, order: true},
datatype: "text",
success: function(response) {
alert(response)
},
error: function(error) {
console.log(error);
}
})
@ResponseBody
@RequestMapping(value = "url 주소", method = RequestMethod.POST)
public String testMethod(@RequestParam String fruit,
@RequestParam int box, @RequestParam boolean order){
try {
String result = fruit + box;
return result;
} catch (Exception e) {
e.printStackTrace();
return "false";
}
}
보낼 때 datatype를 "text"로 설정했기 때문에
java 메소드에서 produces = "application/json;charset=utf8" 도 삭제해줘야 에러없이 동작한다.
2-2) Map으로 받기
$.ajax({
type: 'POST',
url: "url 주소",
data: {fruit: "grape", box: 2, order: true},
success: function(response) {
alert(response)
},
error: function(error) {
console.log(error);
}
})
@ResponseBody
@RequestMapping(value = "url 주소", method = RequestMethod.POST) // , produces = "application/json;charset=utf8"
public String testMethod(@RequestParam Map<String, Object> map)
{
try {
String result = (String)map.get("fruit") + Integer.parseInt(map.get("box").toString()) +
" : " + Boolean.parseBoolean(map.get("order").toString());
return result;
} catch (Exception e) {
e.printStackTrace();
return "false";
}
}
Map<String, Object> 형태로 가지고 오면 Object형을 형변환 해주는게 좀 일이다
2-3) VO로 받기
public class parameterVO {
String fruit;
int box;
boolean order;
public String getFruit() {
return fruit;
}
public void setFruit(String fruit) {
this.fruit = fruit;
}
public int getBox() {
return box;
}
public void setBox(int box) {
this.box = box;
}
public boolean isOrder() {
return order;
}
public void setOrder(boolean order) {
this.order = order;
}
}
$.ajax({
type: 'POST',
url: 'url 주소',
data: {fruit: "grape", box: 2, order: true},
success: function(response) {
alert(response)
},
error: function(error) {
console.log(error);
}
})
@ResponseBody
@RequestMapping(value = "url 주소", method = RequestMethod.POST) // , produces = "application/json;charset=utf8"
public String testMethod(ParameterVO pvo)
{
try {
String result = "ParameterVO ! " + pvo.getFruit() + pvo.getBox() + " : " + pvo.isOrder();
return result;
//return fruit + box + " : " + order;
} catch (Exception e) {
e.printStackTrace();
return "false";
}
}
@RequestBody : http request body의 json value를 자바 객체와 바인딩 해준다
(HttpMessageConverter : 자바 객체와 관련된 http 리퀘스트 메시지를 변환)
-> @RequestBody 어노테이션을 쓸 때는 JSON, 쓰지 않을 땐 x-www-form-urlencoded 방식으로 파라미터를 리퀘스트할 것!
@RequestParam : 리퀘스트 파라미터와 메소드 파라미터를 바인딩 해준다
@RequestBody를 같은 메소드에서 2번 사용할 수 없다
public String testMethod(@RequestBody ParameterVO pvo, @RequestBody parameterVO2 pvo2)
처럼 사용할수 X