【发布时间】: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 对象,并且它有效,我认为它类似于其他输入字段,但是这样您就不需要使用<form>元素。
标签: javascript java html jsp servlets