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

时间:2012-06-08 11:31:33

标签: javascript jquery servlets

我在动态生成的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调用可能会出现什么问题?

谢谢, 阿迪亚

1 个答案:

答案 0 :(得分:1)

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

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

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

相关问题