TheFIF
289
2019-06-26 16:32:43
7
207

ModelAndView로 리턴한 값을 ajax에서 받기.


코드 부터 보여드리겠습니다.


@RequestMapping(value = "source10Data.do", produces = "application/json", method = { RequestMethod.GET, RequestMethod.POST })

public @ResponseBody ModelAndView source10Data(HttpServletRequest request) {

ModelAndView mav = new ModelAndView();

//로직들....


mav.addObject("sid", sid);

mav.addObject("iid", iid);

mav.addObject("sname", sname);

mav.addObject("curpage", curpage);

mav.addObject("pagesize", pagesize);

mav.addObject("type_options", type_options);

mav.addObject("stypes", stypes);

mav.addObject("stypelabels", stypelabels);


return mav;

}


이런식으로 mav에 객체들을 추가해 주었습니다.


$(document).ready(function(){

$('#test').click(function(){

$.ajax({

type : 'POST',

url : 'source10Data.do',

dataType : 'json',

contentType : 'application/json; charse=UTF-8',

success : function(data){

var item = data.sid;

alert(item);

},

error : function(error){

alert('error!!');

}

});

});

});


success쪽으로 못가고 error부분으로 가서 alert창에 error!라고 나옵니다..ㅠ

데이터 요청이 잘못됐다는 말인데...


type : 

url : 

dataType : 

contentType : 


이부분을 어떻게 하면 좋을까요?


컨트롤러에서 ModelAndView로 리턴한 값들을 ajax쪽에서 어떤식으로 받아야 할까요?



위 사진은 F12 개발자 도구에서 본 에러 입니다.


도와주십쇼 선배님들,,!ㅠㅠ



0
0
  • 답변 7

  • 사는게힘듭니다
    2019-06-26 16:41:49

    ajax

    contentType : 'application/json; charse=UTF-8'  X

    contentType : 'application/json; charset=UTF-8'



    controller

    produces = "application/json", X

    produces = "application/json;charset=utf-8",

    0
  • TheFIF
    289
    2019-06-26 16:48:26

    #사는게힘듭니다


    바꿨는데 결과는 똑같습니다..ㅠㅠ 

    0
  • 사는게힘듭니다
    2019-06-26 16:50:40

    JSON 타입을 받겠다고했는데

    ModelAndVIew를 리턴하니까 클라이언트단에서 데이터를 받을수 없어 404를 내뱉는듯싶은데

    저 Model에 담긴데이터들을 JSON으로 바꿔주세요.

    0
  • TheFIF
    289
    2019-06-26 16:58:23

    @사는게힘듭니다


    그렇게 하면 될거 같습니다만..!!!!!


    그렇게 하려면 JsonView를 사용하라고 하는데 그러기 위해서


    <dependency>

    <groupId>net.sf.json-lib</groupId>

    <artifactId>json-lib</artifactId>

    <version>2.4</version>

    <classifier>jdk15</classifier>

    </dependency>

                   <dependency>

    <groupId>org.codehaus.jackson</groupId>

    <artifactId>jackson-mapper-asl</artifactId>

    <version>1.9.13</version>

    </dependency>


    pom.xml에 라이브러리를 추가해 주었습니다.

    그런데 dispatcher에서 이와같이 빨간줄이 뜹니다 ㅠㅠ 라이브러리 추가 잘했는데 왜뜨는지 혹시 아시려나요

    0
  • BumYokan
    565
    2019-06-26 17:35:29 작성 2019-06-26 17:41:16 수정됨

    Vo파일 하나 만드시고 그 안에 데이터 채우시고 그걸 리턴값으로 주시면 json형태로 나갈껄요?


    public @ResponseBody Voname source10Data(HttpServletRequest request) {

    Voname mav = new Voname();

    //로직들....


    mav.setSid(sid);

    //넣을값....

    return mav;


    이런식으로 하시면 될꺼에요

    0
  • humorist
    59
    2019-06-26 17:42:58

    https://bryan7.tistory.com/458

    스프링 버전 확인해보세요 4.1부터는 jackson 1.8,1.9 지원하지않는다고 나오네요

    0
  • BumYokan
    565
    2019-06-26 17:44:52

    @GetMapping("/test")

    public @ResponseBody Voname test() {

    Voname a = new Voname();

    a.setId(1);

    a.setName("222");

    a.setRealname("333");

    return a;

    }

    이런식으로 실험해봤는데 json형태로 가네요

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