如何解决使用动作属性提交表单与使用XMLHttpRequest发送表单数据有何不同? 有用的帖子
我正在尝试使用XMLHttpRequest提交表单值。
HTML:
<form id="form" method="post" action="../myapi/submitRequest">
<input type="text" name="type" placeholder="Type">
<input type="text" name="eventDate" placeholder="Date">
<input type="text" name="amount" placeholder="Amount">
<input type="file" name="reciept">
<input type="submit">
</form>
在Java中的某个地方:
System.out.println(request.getParameter("type"));
System.out.println(request.getParameter("eventDate"));
System.out.println(request.getParameter("amount"));
System.out.println(request.getParameter("reciept"));
这将打印表单字段值。完美地工作!
但是
HTML:
<form id="form">
<input type="text" name="type" placeholder="Type">
<input type="text" name="eventDate" placeholder="Date">
<input type="text" name="amount" placeholder="Amount">
<input type="file" name="reciept">
<input type="submit">
</form>
JavaScript:
const form = document.getElementById("form");
form.addEventListener('submit',function(event){
let xhr = new XMLHttpRequest();
xhr.open("POST","../myapi/submitRequest",true);
let fd = new FormData(form);
xhr.send(fd);
});
在Java中的某个地方:
System.out.println(request.getParameter("type"));
System.out.println(request.getParameter("eventDate"));
System.out.println(request.getParameter("amount"));
System.out.println(request.getParameter("reciept"));
执行此操作时,所有参数值都为 null 。
我做错什么了吗?
解决方法
我想我发现了为什么这样做的原因。当我使用net.collect_params().reset_ctx(mxnet.gpu())
属性提交表单数据时,没有设置action
属性。因此,当我提交表单时,内容类型为enctype
。当我使用javascript发送邮件时,内容类型设置为application/x-www-form-urlencoded
。
我环顾四周,发现如果内容类型不是multipart/form-data; boundary=----WebKitFormBoundaryfxmNAuz7ZhhuUcZn
,则request.getParameter()将返回null。所以,这就是为什么我得到那些空值!
有用的帖子
Convenient way to parse incoming multipart/form-data parameters in a Servlet
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。