JSON.stringify()
JSON.stringify( )는 자바스크립트의 값을 JSON 문자열로 변환한다.
var formData={"id":$("#id").val()};
->data:JSON.stringify(formData),
function checkIdBtn(){
alert("아이디를 체크합니다");
var formData={"id":$("#id").val()}; // member객체의 인스턴스 변수의 이름을 맞춰줘야한다. - 타입은 맞춰서 들어감.
$.ajax({
url:"checkId",
type:"post",
//기본타입-form 형식으로 전송
data:formData,
//json 타입으로 전달
//data:JSON.stringify(formData),
dataType:"json",//받을때 json이라는 json format으로 받겟다
//contentType:"application/json; charset=utf-8;",
// 보낼때 해당되는 내용 mine 타입
success:function(data){
alert("성공");
console.log(data);
},
error:function(){
alert("실패");
}
});
}
Mcontroller
View 페이지가 아닌 반환값 그대로 클라이언트한테 return 하고 싶은 경우 @ResponseBody를 사용하면 된다.
@RequestBody를 통해서 자바객체로 conversion을 한다.(json 기반의 HTTP Body를 자바 객체로 변환)
일반적인 GET/POST의 요청 파라미터라면 @RequestBody를 사용할 일이 없을 것이다.
@ResponseBody 자바객체를 HTTP요청의 바디내용으로 매핑하여 클라이언트로 전송한다.
반면에 xml이나 json기반의 메시지를 사용하는 요청의 경우에 이 방법이 매우 유용하다.
@ResponseBody
@RequestMapping("/checkId")
public MemberVo checkId( MemberVo m) {
//public MemberVo checkId(@RequestBody MemberVo m) { <-json일때
System.out.println("Mcontroller:"+m.getId());
//DB에서 확인
String[] hobbys={"swim","jogging","game"};
MemberVo mvo=new MemberVo("aaa","1111","이마로","010-1111-1111","female",hobbys);
return mvo; // WEB-INF/views/mvo.jsp
}