FormData - 来自HTML

时间:2015-12-25 17:11:49

标签: javascript java html5 jsp servlets

我尝试使用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[]");来读取值。它适用于标准表单子目录(通过&#39; GET&#39;按钮)。但是,当我使用XHTMLHttpRequest从JavaScript级别执行此操作时,Java中的argument对象 null 。我究竟做错了什么?我最好的猜测是我的formData对象不能按预期工作,但为什么呢?

1 个答案:

答案 0 :(得分:0)

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

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

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