2014-12-02 4 views
1

이 질문은 아마도 이전에 물어 보았지만 나는 그것에 awnser를 찾을 수없는 것 같습니다.Ajax를 사용하여 서블릿에서 데이터 호출

페이지가로드 될 때 서블릿 메서드를 호출하려고하는데, 서블릿이 페이지가 다시로드 된 응답을 게시하고 서블릿을 다시 호출 할 때마다 무한 루프가 발생하여 다시 페이지를 다시로드합니다. 등등.

내가 필요로하는 데이터를 수집하기 위해 서블릿에서 사용하는 URL에서 ID를 수집하고 있습니다. 다음은 현재 사용중인 코드입니다.

<form style="display:none;" action="ServletC" method="POST"> 
       <input type="hidden" name="hdn_parameter" value="<%= request.getParameter("productID")%>"/> 
       <input type="submit" id="btn_loadform" name="loadform" style="display: none;"/> 
       <script> 

         document.getElementById('btn_loadform').click(); 
       </script> 
      </form> 

나는 페이지

<img id="picture_img" class="" style="width:300px;" src="${ImageResponse}" /> 

다음 코드는 내 서블릿에 걸쳐이 같은 코드의 몇 조각을 가지고

if (request.getParameter("loadform") != null) 
    { 
      int productID = Integer.parseInt(request.getParameter("hdn_parameter")); 
      String link = "PictureDetail.jsp?productID=" + Integer.toString(productID); 
      Product p = null; 
      try 
      { 
        p = DBConnect.getProduct(productID); 
      } 
      catch (SQLException ex) 
      { 
       Logger.getLogger(ServletC.class.getName()).log(Level.SEVERE, null, ex); 
      } 

      request.setAttribute("ImageResponse", p.getPath()); 
      request.setAttribute("TitleResponse", p.getName()); 
      request.setAttribute("DescriptionResponse", p.getDescription()); 
      request.setAttribute("PriceResponse", p.getPrice()); 
      loaded = true; 
      RequestDispatcher dis = request.getRequestDispatcher(link); 
      dis.forward(request, response); 
    } 

는 아무도 내가 무엇을해야하는지에 저를 도울 수 이제는 페이지를 새로 고치지 않고도이 작업을 수행하여 원활하게 작동합니다.

미리 감사드립니다.

+0

페이지를 리디렉션하면 ajax에서 response.i.e 실제 HTML 코드가 표시됩니다. 리디렉션 된 페이지 HTML을 얻게됩니다. 리디렉션하고 해당 페이지를 아약스와 함께로드하려는 경우 –

답변

0

해당 버튼을 클릭 할 때 나오는 요청은 적절한 http 요청이며 해당 응답은 자연스럽게 페이지를 다시 칠합니다. 버튼 클릭시 AJAX 요청을 작성하고 성공시 응답을 구문 분석 한 다음 페이지에서 구문 분석 된 응답 데이터를 사용하여 무언가를 수행해야합니다.

+0

정확하게 이것을 수행하는 방법을 알려주시겠습니까? 아약스에 대해 아무것도 모릅니다. – NoSixties

관련 문제