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

Not able to call servlet doPost method from JS form

本文关键字:servlet doPost 方法 调用 表单 JS      更新时间:2023-09-26

我在从动态生成的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调用中可能存在什么问题吗?

谢谢阿迪亚

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

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

通过查看 servlet 中null orderId和/或查看浏览器发送的实际请求以查看正在发送哪些参数以及如何发送,调试这一点非常简单。