2017-06-27 57 views
0

我在使用表单提交进行POST请求的servlet中遇到问题,但在servlet方面显示没有任何参数可用。我不知道这可能是造成这个问题或如何解决它请求doPost中没有参数servlet

,这是我的表单提交:

<table> 
    <form name="eliAlumno" id="eliAlumno" method="POST" action="DelAlumno"> 
    <tr> 
     <td><input type="radio" name="radioGroup" class="radioButtonEli" value="0"></input></td> 
     <td>any name</td> 
     <td>any last name</td> 
     <td>any string</td> 
     <td>any number</td> 
     <td>true or false</td> 
     <td><input type="submit" id="0" value="Eliminar"></input></td> 
    </tr> 
    </form> 
</table> 

这是我的javascript

$("#eliAlumno").submit(function (event) { 
    event.preventDefault(); 
    document.getElementsByClassName("loader")[1].style.display = "block"; 
    setTimeout(del, 3000); 

    function del() { 
     document.getElementsByClassName("loader")[1].style.display = "none"; 
     $.ajax({ 
      url: "DelAlumno", 
      type: "POST", 
      data: $("#eliAlumno").serialize() 
     }) 
       .done(function (json) { 
        bootbox.alert({ 
         size: "small", 
         title: "Exito", 
         message: "El alumno ha sido eliminado adecuadamente." 
        }); 
       }) 
       .fail(function (xhr, status, errorThrown) { 
        bootbox.alert({ 
         size: "large", 
         title: "Error", 
         message: "El alumno no se eliminó adecuadamente\n\ 
información del error: <br>" + errorThrown 
        }); 
       }); 
    } 
}); 

,这是我的servlet的doPost方法

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
     throws ServletException, IOException { 
    Gson g = new Gson(); 
    ProcessDataDel pdd = new ProcessDataDel(); 
    int id = Integer.parseInt(request.getParameter("radioGroup")); 
    pdd.deleteAlu(id, g); 
    response.sendRedirect("consulta.jsp"); 
} 

HttpServletRequest对象没有任何参数,当我debbug ING。

+0

有没有在之前您提交时至少选择了一个按钮?如果没有选择按钮,则不会提交任何参数。 – stdunbar

+0

是的,我提交时选择了一个按钮 – Emenor

+0

我首先使用浏览器中的工具 - Chrome中的开发人员工具或Firefox中的Firebug。这将帮助您查看浏览器正在发送的内容。这将需要你深入研究,因为这篇文章可能会被URL编码,但你可以首先验证HTML/JavaScript端是否发送了你期望的内容。 – stdunbar

回答

0

我就是在混合什么是控制器和servlet。 你试图做的是对Action而不是servlet doPost的调用。

+0

不,海报不使用Struts。 – stdunbar

1

我已经回答了我自己的问题。

对于一些实际情况,发送数据时,AJAX方法的顺序非常重要。

相反的:

$.ajax({ 
    url: "DelAlumno", 
    type: "POST", 
    data: $("#eliAlumno").serialize() 
}) 

它必须是:

$.ajax({ 
    url: "DelAlumno", 
    data: $("#eliAlumno").serialize(), 
    type: "POST" 
}) 

我怀疑,如果类型是数据之前,servlet的进入方法读取参数