提交表单时页面会发生变化

时间:2015-07-19 08:39:15

标签: javascript java jquery jsp

<form action="/devilmaycry/register?action=addtocart" method="post">            
           <input type="hidden" name="user" value="<%=user%>"/>
           <input type="hidden" name="pid" value="<%=pid%>"/>
           <input type="submit" value="Add to cart" onclick="add();"/>
         </form> 

我使用上面的代码提交表单并将产品添加到购物车 它调用的java代码如下:

 else if(n.equals("addtocart"))
  {
      String user = req.getParameter("user");
      int pid = Integer.parseInt(req.getParameter("pid"));

      k=o.addintocart(user,pid);

     if(k==1)
      {
          pw.println("<h3>Added to cart !!!<h3>");
      }
      else
      {
          pw.println("<h3>Errror , try again <h3><br>");
      }  

它确实将产品添加到表中但是它更改了jsp页面...我尝试使用requestDispatcher但是URL有很多参数所以我想要其他东西通过它我可以保留相同的页面并更新表格也是

1 个答案:

答案 0 :(得分:1)

为了保持同一页面,您需要使用AJAX而不是以传统方式提交表单。 HTTP以请求 - 响应的方式工作,因此当用户提交表单时,浏览器希望在服务器的响应中接收新页面,从而刷新页面并呈现它接收的新HTML。

这里有两个选项:

  1. 坚持传统的HTTP表单提交请求 - 响应方法,当您在服务器上收到将项目添加到卡片中的请求时,将项目添加到卡片后,重建页面的URL即向用户显示信息。在这种情况下,使用&#39; Redirect-After-Post&#39;方法(即在表单POST的响应中,您将重定向到页面)。否则,如果用户通过按F5刷新页面,表单数据将再次重新提交,并且该项目将再次添加到购物车。

  2. 寻求AJAX方法。在add()函数中,您需要使用Javascript提交表单。如果您使用的是JQuery,那么您可以轻松地执行此操作。如果您四处搜索,可以使用各种问题/示例,例如here

  3. 在后一种情况下,您需要更改一下如何处理来自Servlet的信息,但这是让浏览器保持在同一页面上的唯一方法(无需重新加载)。您还拥有successerror处理程序,可用于在屏幕上显示消息以显示结果。