Contents
see List작성일 2015. 04. 08.
jQuery에서 Ajax로 배열 전송하기
jQuery Ajax에서 배열 파라미터를 서버로 전송할 때 전통적인 방식을 사용해야 합니다.
문제 상황
기본 jQuery Ajax는 배열을 ids[]=1&ids[]=2 형식으로 전송하는데, Spring 등 일부 백엔드에서는 이를 인식하지 못합니다.
해결 방법
// 전역 설정
$.ajaxSettings.traditional = true;
// 또는 개별 요청에서 설정
$.ajax({
url: "/api/items",
type: "POST",
traditional: true, // 핵심 옵션
data: {
ids: [1, 2, 3, 4, 5]
},
success: function(response) {
console.log(response);
}
});traditional 옵션 차이
// traditional: false (기본값)
// 전송 형식: ids[]=1&ids[]=2&ids[]=3
// traditional: true
// 전송 형식: ids=1&ids=2&ids=3다양한 전송 방법
// 방법 1: JSON으로 전송
$.ajax({
url: "/api/items",
type: "POST",
contentType: "application/json",
data: JSON.stringify({ids: [1, 2, 3]}),
success: function(response) {}
});
// 방법 2: param 메서드 사용
var data = $.param({ids: [1, 2, 3]}, true);
$.post("/api/items", data);
// 방법 3: 문자열로 직접 조합
var ids = [1, 2, 3];
var params = ids.map(id => "ids=" + id).join("&");
$.post("/api/items?" + params);Spring Controller에서 받기
@RequestMapping("/api/items")
public void getItems(@RequestParam("ids") List ids) {
// ids: [1, 2, 3]
}
// 또는
@RequestMapping("/api/items")
public void getItems(@RequestParam("ids") int[] ids) {
// ids: [1, 2, 3]
} javascript
| No | 작성일 | Title |
|---|---|---|
| 1180 | 2016. 11. 28. | [ AngularJS ] angularJs jquery selector |
| 1141 | 2016. 11. 01. | [ AngularJS ] ng-if 의 경우 상위 디렉브를 생성한다. |
| 1139 | 2016. 10. 21. | [ javascript ] 반응형 웹에서 PC 버전보기 구현 |
| 1076 | 2016. 09. 09. | [ AngularJS ] promise then 사용 |
| 1075 | 2016. 09. 07. | [ AngularJS ] 형제 태그 ng-repeat |
| 1074 | 2016. 09. 07. | [ AngularJS ] 의 이벤트 전파 |
| 1041 | 2016. 08. 18. | [ AngularJS ] json parsing spring ajax (and $$hashKey error ) |
| 1040 | 2016. 08. 18. | [ AngularJS ] select option ng-options |
| 1039 | 2016. 08. 18. | [ AngularJS ] ng-repeat 에서 ng-model 사용시 제대로 작동안할때 |
| 1038 | 2016. 08. 16. | [ AngularJS ] 어느 위치에서나 scope 에 접근하기 (전역,지역) |