无法从JS表单调用servlet doPost方法

我在动态生成的Javascript表单中调用servlet doPost方法时遇到了问题。

var form = document.createElement("form"); form.setAttribute("action", 'cisco-fetch-devices'); form.setAttribute("method", 'POST'); var hiddenField = document.createElement("input"); hiddenField.setAttribute("type", "hidden"); hiddenField.setAttribute("name", 'hiddeninputfield'); hiddenField.setAttribute("value", data); form.appendChild(hiddenField); document.body.appendChild(form); form.submit(); 

但是我可以从jquery ajax调用调用相同的servlet”cisco-fetch-devices’:

  $.post("cisco-fetch-devices", { orderId : data}, function(data) { alert("Data Loaded: " + data); }); 

JS动态表单提交生成’文件未找到错误’

这是我的doPost方法:

  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/csv"); response.setHeader ("Content-Disposition", "attachment;filename=\"tableincsv.csv\""); String orderId = request.getParameter("orderId").toString(); java.io.PrintWriter out = response.getWriter(); out.print("TEST DAta"); } 

能不能让我知道JS的传统POST调用可能会出现什么问题?

谢谢,Aditya

您发送的数据将不相同 – 您的hiddeninputfield字段应命名为orderId ,并使用订单ID进行初始化。 或者,您可以解析hiddeninputfield请求参数,但这看起来有点愚蠢。

jQuery调用正确发送orderId表单值。

通过查看servlet中的orderIdnull ,和/或通过查看浏览器发送的实际请求以查看正在发送的参数以及如何调试,可以非常简单地进行调试。