【问题标题】:FormData - array from HTMLFormData - 来自 HTML 的数组
【发布时间】:2015-12-25 17:11:48
【问题描述】:

我正在尝试使用 XHTMLHttpRequest 对象将数据发送到 Java servlet。数据是形式的,所以我决定使用 FormData 对象。但是有些东西不起作用,我无法读取 Java servlet 中的数据。

我的 HTML:

<form id="formTable" action="Calc" method="GET">
    <input type="submit" value="GET">
    <input type="button" onclick="sendRequest()" value="AJAX">
    <table id="valuesTable">
        <thead>
            <tr>
                <td>x</td>
                <td>sin(x)</td>
                <td>cos(x)</td>
            <tr>
        </thead>
        <tbody>
            <td><input type="number" name="args[]" step=0.0001 value=0 required></td><td>0</td><td>0</td>
            <td><input type="number" name="args[]" step=0.0001 value=0 required></td><td>0</td><td>0</td>
            <td><input type="number" name="args[]" step=0.0001 value=0 required></td><td>0</td><td>0</td>
        </tbody>
    </table>
</form>

和sendRequest函数:

function sendRequest() {  
    var xmlhttp = new XMLHttpRequest();
    var formElement = document.getElementById("formTable");
    var formData = new FormData(formElement);
    console.log(formData);
    xmlhttp.onreadystatechange = function ()
    {
        if (this.readyState == 4 && this.status == 200)
        {
            processResponse(this);
        }
    };
    xmlhttp.open("GET", "Calc", true);
    xmlhttp.send(formData);
}

在 Java servlet 中,我使用 String argument[] = request.getParameterValues("args[]"); 来读取值。它适用于标准表单提交(通过“GET”按钮)。但是,当我使用 XHTMLHttpRequest 从 JavaScript 级别执行此操作时,Java 中的 argument 对象为 null。我究竟做错了什么?我的最佳猜测是不知何故我的formData 对象无法按预期工作,但为什么呢?

【问题讨论】:

  • 使用不带参数的FormData()构造函数。
  • @RomanC 我试过但没有成功。但无论如何,如果没有构造函数参数,它应该如何工作?
  • 我已经使用FormData 上传blob 对象,并且它有效,我认为它类似于其他输入字段,但是这样您就不需要使用&lt;form&gt; 元素。

标签: javascript java html jsp servlets


【解决方案1】:

当您尝试使用 GET 请求发送 formData 时,它会被忽略。您将需要改用 POST:

xmlhttp.open("POST", "Calc", true);
xmlhttp.send(formData);

同时请求以multipart/form-data 发送,因此必须使用HttpServletRequest.getPart(s) 来读取参数。

【讨论】:

  • 这并不能解决问题(POST请求的处理方式与我的servlet中的GET请求相同)。
猜你喜欢
  • 2016-12-05
  • 1970-01-01
  • 2014-05-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多