我尝试使用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
对象不能按预期工作,但为什么呢?
答案 0 :(得分:0)
当您尝试使用GET请求发送formData
时,它将被忽略。您将需要使用POST:
xmlhttp.open("POST", "Calc", true);
xmlhttp.send(formData);
此请求也会以multipart/form-data
的形式发送,因此必须使用HttpServletRequest.getPart(s)
来读取参数。