작성
·
406
0
안녕하세요 선생님.
function goUpdate(idx) {
var title=$("#nt"+idx).val();
var content=$("#ta"+idx).val();
$.ajax({
/* url : "boardUpdate.do", */
url : "board/update",
/* type : "post", */
type : "put",
/* Rest 부분에서 추가됨 */
contentType: 'application/json;charset=utf-8',
/* data : {"idx":idx, "title":title, "content":content}, */
data : JSON.stringify({"idx":idx, "title":title, "content":content}),
success : loadList,
error : function() {alert("error");}
});
}
여기서 {"idx":idx, "title":title, "content":content}) 이렇게 여러개를 보낼 때는 JSON.stringify를 붙여주고 contentType을 json으로 지정해줘야 하잖아요??
그리고 컨트롤러에서 @RequestBody가 필요하구요.
그런데 궁금한 것이 있습니다.
function goInsert(){
//var title=$("#title").val();
//var content=$("#content").val();
//var writer=$("#writer").val(); // 많으면 번거로움
var fData=$("#frm").serialize(); // form 안의 모든 parameter를 직렬화(한줄로)시켜서 한줄로 가져옴
$.ajax({
/* url : "boardInsert.do", */
url : "board/new",
type : "post",
data : fData,
success : loadList,
error : function() { alert("error")}
});
여기서 data를 fData로 넘겨주는데 fData는 여러개를 serialize()를 통해서 한줄로 가져오는 거잖아요?? 이거는 여러개긴 한데 한줄로 하나로 보내기 때문에 JSON.stringify가 필요 없는 건가요?? 그리고 컨트롤러에서도 @RequestBody 없이 받아도 잘 받아졌거든요. serialize()는 JSON이 아니기 때문에 @RequestBody가 필요없는건가요?
정리하자면 여러개를 보낼 때는 JSON.stringify로 해서 보내고 serialize()는 한줄로 만들어주기 때문에 여러개가 아니라 하나로 보면 될까요? 그리고 @RequestBody는 JSON 데이터를 처리할 때만 필요하고 serialize는 JSON 데이터가 아니니까 @RequestBody가 필요없는 것 맞을까요?
감사합니다.
답변 1
1
1. 여기서 {"idx":idx, "title":title, "content":content}) 이렇게 여러 개의 데이터를 JSON형식으로 컨트롤러에 전달하고자 하면 JSON.stringify로 변환해서 전달 하면되고 컨트롤러에서 받을 때 @RequestBody를 붙여서 받으면 됩니다.
contentType : json 이 부분은 서버에서 JSON데이터 받을 때 사용하면 됩니다. 서버에서 받을 필요가 없는 경우에는 사용하지 않아도되구요.
2. 여기서 data를 fData로 넘겨주는데 fData는 여러개를 serialize()를 통해서 한 줄로 가져오는 거잖아요?? 이거는 여러개긴 한데 한줄로 하나로 보내기 때문에 JSON.stringify가 필요 없는 건가요?? 그리고 컨트롤러에서도 @RequestBody 없이 받아도 잘 받아졌거든요. serialize()는 JSON이 아니기 때문에 @RequestBody가 필요 없는 건가요? => 이 부분은 잘 이해하시고 계십니다.