FormData对象,可以把所有表单元素的name与value组成一个queryString,提交到后台。 在使用ajax提交时,使用FormData对象可以减少拼接queryString的工作量。同时FromData可以接收到二进制文件(可以用来做异步上传文件),serialize
只能序列化简单的数据。
文件上传时会有坑,建议大家好好看我这里写的。
form表单添加 enctype="multipart/form-data"
ajax中必须加入下面这俩个配置
processData: false,
contentType: false,
var formData = new FormData($("#fileinfo")[0]);
$.ajax({
dataType: "json",
type: "post", // 提交方式 get/post
url: '/dog/saveOrUpdate.action', // 需要提交的 url
data: formData,
processData: false,
contentType: false,
success: function(data) {
}
});
new FormData的参数是一个DOM对象,而非jQuery对象
我们通过[index]的方法,来得到相应的DOM对象。
var formData = new FormData($("#fileinfo")[0]);
下面通过一个保存狗的小例子来演示这个用法。
var itemForm = $('#itemForm');
var formData = new FormData($("#itemForm")[0]);
$.ajax({
dataType: "json",
// 提交方式 get 或 post
type: "post",
// 需要访问的 Servlet 的映射路径 urlPatterns
url: '/saveDog',
data: formData,
processData: false,
contentType: false,
success: function(data) {
}
});
/**
* Servlet3.0 注解 WebServlet 用来描述一个 Servlet。
* 属性 name 描述 Servlet 的名字,可选。
* 属性 urlPatterns 定义访问的 URL。(定义访问的 URL 是必选属性)。
*/
@WebServlet(name="SaveDogServlet", urlPatterns="/saveDog")
public class SaveDogServlet extends HttpServlet{
public void doPost(HttpServletRequest request,HttpServletResponse response)throws IOException,ServletException{
// 防止中文乱码
request.setCharacterEncoding("utf-8");
// 获取前端表单通过 ajax 传来的 dogName
String dogName = request.getParameter("dogName");
// 获取前端通过 ajax 传来的 dogAge
String dogAge = request.getParameter("dogAge");
// 打印前端通过 ajax 传来的数据
System.out.println("dogName: " + dogName);
System.out.println("dogAge: " + dogAge);
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
}
小知识点
这种通过 @WebServlet 注解配置 Servlet 类似于我们在 web.xml 里这么配置
SaveDogServlet
com.ypf.web.servlet.SaveDogServlet
SaveDogServlet
/saveDog
serialize() 方法通过序列化表单值,创建 URL 编码文本字符串。
你可以选择一个或多个表单元素(比如 input 及/或 文本框),或者 form 元素本身。
序列化的值可在生成 AJAX 请求时用于 URL 查询字符串中。
这里只列举 ajax 代码,其他代码和上述代码完全相同。
// 获取form表单的jquery对象
var itemForm= $('#itemForm');
$.ajax({
dataType: "json",
// 提交方式 get 或 post
type: "post",
// 需要访问的 Servlet 的映射路径 urlPatterns
url: "/saveDog",
data: itemForm.serialize(),
success: function(data) {
}
});
JavaWeb视频教程(JSP/Servlet/上传/下载/分页/MVC/三层架构/Ajax)
https://www.bilibili.com/video/av29086718?from=search&seid=10477065192336901773
Servlet入门和Tomcat
https://www.bilibili.com/video/av44994659/?p=1