2014-12-02 84 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