2014-12-02 78 views
1

我知道這個問題可能以前曾被問過,但我似乎無法找到它上面的awnser。使用Ajax從servlet中調用數據

我想在加載頁面時調用一個servlet方法,此時這是一個無限循環,因爲每當servlet發佈響應時頁面被重新加載並再次調用再次調用的servlet,然後再次重新加載頁面等等等。

我正在從url中收集一個ID,然後在servlet中使用它來收集我需要的數據。 這是我目前使用的代碼。

<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}" /> 

下面的代碼是在我的servlet得到了這樣的代碼一對夫婦件

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.if你想重定向和加載該頁面出Ajax – 2014-12-02 13:11:48

回答

0

單擊該按鈕時發出的請求是正確的http請求,其響應自然會重新繪製該頁面。您必須在按鈕單擊時形成AJAX請求,解析成功的響應,然後在頁面上執行一些操作(使用解析的響應數據)。

+0

你能告訴我如何做到這一點,我對阿賈克斯一無所知 – NoSixties 2014-12-02 11:27:02