我在动态生成的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调用可能会出现什么问题?
谢谢, 阿迪亚
答案 0 :(得分:1)
您发送的数据不一样 - 您的hiddeninputfield
字段应命名为orderId
,并使用订单ID进行初始化。或者,您可以解析hiddeninputfield
请求参数,但这看起来很愚蠢。
jQuery调用正确发送orderId
表单值。
通过在servlet中看到orderId
为null
和/或通过查看浏览器发送的实际请求以查看正在发送的参数来调试它会非常简单,以及如何。