Ajax 통신 url 보낼때 쿼리스트링도 같이 못보내나요..?

조회수 2838회

안녕하세요! 제가 스프링 MVC 패턴을 이용한 영화예매프로그램 개발중에 있는데요

 **/* 평점 등록 버튼 누르면 댓글 등록되게하기 ! 비로그인시 -> 로그인 유도 팝업창 
                                    로그인되있을시 -> moviescore insert하기!
                     insert와 동시에 moviescore select 해서 화면에 바로 뿌려주기!
      */**

    $("#btn_register").click(function(){
            var currentScore = $('#div_rating').raty('score'); //별점
            var cheklog = $("#loginid").val(); //로그인 아이디
            var ms_mid = $("#ms_mid").val(); //영화 m_number 받아오기 

            if(cheklog == null || cheklog==""){
                alert("로그인안됐어!");
            }
            else{
                //alert("로그인했네?");
                var params =$("#formId").serialize();
                $.ajax({
                    url:"detailMovie.com?m_number='"+ms_mid+"'",
                    data:params,
                    success:function(data){ 
                        alert(data);
                    }
                });`여기에 코드를 입력하세요`
                //$("#formId").attr("action","insertMovieScore.com");

            }

        });

이렇게 url:url:"detailMovie.com?m_number='"+ms_mid+"'" 이부분을 이렇게 해야하는 이유가 detailMovie.com을 하면 컨트롤러에서 m_number를 매개변수료 요구하거든요 (db 쿼리할때 where 조건문으로 m_number에 맞는 데이터를 뽑아오기 때문에 ) 저는 페이지 이동없이 ajax를 써서 평점을 등록하면 바로 그 밑에 등록한 평점을 갱신하려하는데.. 이부분에서 지금 막혀있어요 ㅠㅠ 이렇게 하면 평점이 insert는 되는데 select해서 다시 가져올때 updateMovie.com부분에서 m_number가 null로 받아와서 상세페이지에서 정보를 못뽑아줘요 ㅠㅠㅠ 이걸 어떻게 처리해야할가요...도와주세요ㅠㅠ

이부분이 detailMove.com을 요청했을때 오는 Controller 부분이구,

@RequestMapping("/detailMovie.com")
public ModelAndView getMovie(@RequestParam(value="m_number", defaultValue="1") int m_number,HttpServletRequest request,HttpServletResponse response, HttpSession session){
    ModelAndView mav = new ModelAndView();
    System.out.println("디테일1 : "+request.getAttribute("m_number"));
    if(request.getAttribute("m_number")!=null && !request.getAttribute("m_number").equals(""))
    {
        //System.out.println("에러직전");
        m_number = Integer.parseInt(request.getAttribute("m_number").toString());
        System.out.println("디테일2 : "+m_number);
    }


    mav.addObject("m",dao.getMovie(m_number));
    return mav;
}

이부분이 insertMovieScore.com을 했을때 오는 컨트롤러 부분이예요!

@RequestMapping("/insertMovieScore.com")
public ModelAndView submit(MovieScoreVo ms,HttpServletRequest request,HttpSession session,HttpServletResponse response){
    ModelAndView mav = new ModelAndView("redirect:/detailMovie.com");
    int re = dao.insertMovieScore(ms);

    request.setAttribute("m_number", ms.getMs_mid()); 

    List<MovieScoreVo> list = dao.listMovieScore();
    String json = "[";
    json 만들어서 보내는부분

        json += "]";
    }

    try{
        response.setContentType("text/plain"); //plain json형태1!!!!!!
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        out.write(json);
        out.flush();
        out.close();
    }catch(Exception e){System.out.println(e.getMessage());}


    return mav;
}
  • (•́ ✖ •̀)
    알 수 없는 사용자
  • $.ajax 하실 때 type 설정 해주세요 'GET' 인가요 'POST' 인가요 ? Nullgom 2017.9.12 10:48

1 답변

  • 잘 될텐데 이상하네요.

    혹시 모르니

    url:"detailMovie.com?m_number='"+ms_mid+"'",
    

    이 부분을

    url: "detailMovie.com?m_number=" + ms_mid,
    

    이렇게 고쳐보세요.

    제가 테스트한 소스 첨부하니 참고하세요.

    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>test</title>
    <script src="/resources/js/jquery-1.12.4.js"></script>
    </head>
    <body>
    <h2>ajax test</h2>
    <p>watch the console</p>
    <p>response: <span style="color: red" id="result"></span></p>
    <script>
    $.ajax({
        url: '/hello.data?a=1',
        data: 'b=2&c=3',
        dataType: 'json',
        success: function(data) {
            console.debug('success');
            $('#result').text(data.message);
        }
    })
    </script>
    </body>
    </html>
    

    아래는 크롬 개발자도구 캡쳐입니다: 이미지

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)