使用Ajax从servlet调用数据

时间:2014-12-02 10:59:18

标签: ajax jsp servlets

我知道这个问题可能以前曾被问过,但我似乎无法找到它上面的芒果。

我试图在加载页面时调用servlet方法,此时它是一个无限循环导致每次servlet发布响应时页面重新加载并再次调用servlet然后调用再次重新加载页面等等。

我从网址收集一个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);
    }

任何人都可以帮我完成我现在应该做的事情,以便在不刷新页面的情况下实现这一目标,以便它能顺利运行。

提前致谢。

1 个答案:

答案 0 :(得分:0)

单击该按钮时发出的请求是一个正确的http请求,其响应自然会重新绘制该页面。您必须在按钮单击时形成一个AJAX请求,在成功时解析响应,然后在页面上执行某些操作(使用已解析的响应数据)。