연습용더미1
440
2021-02-22 14:57:29 작성 2021-02-22 15:25:41 수정됨
0
89

ajax 배열 전송 질문있습니다.


이름이 같은 input의 값을 ajax로 ResponseBody로 전송하려고 합니다.


컨트롤러

@RequestMapping(value = "/uplist.ajax", method = RequestMethod.POST)
	@ResponseBody
	public String toCommonUser(@RequestParam(value = "user[]") String[] users) { ~


스크립트

var users = new Array();
document.querySelectorAll("input[type=checkbox]").forEach(function(element) {
	if(element.checked) {
		users.push(element.nextSibling.value);
		console.log(users);
	}
});

let data = {"users":users};
updateList(users, function(isSuccess) {
	if(isSuccess) {
		alert("변경되었습니다.");
	}
});
function updateList(data, callback) {
    console.log(data);
    let isSuccess = false;
    
    $.ajax({
	type:"post",
	url:"/user/uplist.ajax",
	data:JSON.stringify(data),
	dataType:"json",
	traditional:true,
	success:function(data) { ~


시도사항으로는

Controller에서 produces = "application/text; charset=utf-8" 넣고 시도

@RequestParam 없이 시도 -> 컨트롤러에 null 찍힘

@RequestBody로 시도 -> 415 에러

@RequestParam(value = "users") 로 시도 -> 400 에러

HttpServletRequest 의 getAttribute("users") 시도 -> 컨트롤러에 null 찍힘

ArrayList<String>으로도 시도. 매터에서 parameterType string, array, List 다 시도. -> 컨트롤러에 [] 찍힘

마찬가지로 @RequestBody, @RequestParam(value = "users") 사용 시 각각 415, 400 에러.


스크립트에서 var users = []; 로도 시도

updateList(data, ~) 로도 시도

serialize() 데이터 시도

contentType:"application/json; charset=utf-8" 도 넣어서 시도

$.ajaxSettings.traditional = true; 도 따로 넣어서 시도

data: data 시도

dataType:"text" 시도




대체 뭘 더해봐야 할지도 모르겠을 정도로 보이는 대로 다 해봤는데 안됩니다.

0
  • 답변 0

  • 로그인을 하시면 답변을 등록할 수 있습니다.