My view is HTML 5. I\'m using FormData to make a AJAX 2 POST to a Servlet. Inside the servlet i\'m trying to read request parameters. I can\'t see any parameters. However, G
The HTML5 FormData
API sends a multipart/form-data
request. It's initially designed to be able to upload files by ajax, with the new version 2 XMLHttpRequest
. Uploading files wasn't possible with the previous version.
The request.getParameter() by default recognizes application/x-www-form-urlencoded
requests only. But you're sending a multipart/form-data
request. You need to annotate your servlet class with @MultipartConfig so that you can get them by request.getParameter()
.
@WebServlet
@MultipartConfig
public class YourServlet extends HttpServlet {}
Or, when you're still not on Servlet 3.0 yet, use Apache Commons FileUpload. For a more detailed answer on both approaches, see this: How to upload files to server using JSP/Servlet?
If you don't need to upload files at all, use the "standard" XMLHttpRequest
approach instead.
var xhr = new XMLHttpRequest();
var data = "firstName=" + encodeURIComponent(firstName)
+ "&lastName=" + encodeURIComponent(lastName);
xhr.open("POST", targetLocation, true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.send(data);
This way you don't need @MultipartConfig
on your servlet anymore.