无法从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中的orderId
为null
,和/或通过查看浏览器发送的实际请求以查看正在发送的参数以及如何调试,可以非常简单地进行调试。