天天看点

form表单AJAX提交(四种方法)

一、AJAX的 form表单提交

1、第一种: 序列化提交 $(’#form’).serialize()

前台:

$.ajax({
	url: "",
	type: "post",
	dataType: "json",
	data: {
	    data : $('#form').serialize()
	},
	success: function (result) {
	}
})
           

后台:

可以用实体类接收(实体类参数必须大小写严格一致)。也可以把所有前台name传值,挨个写在参数里面。

传递的参数形式为:name=1&pwd=2&email=3&phone=4

@ResponseBody
	@RequestMapping("/form")
	public Msg form(User user){
		userDao.insert(user); // 添加一条信息
	}
           

2、第二种: 以对象形式传到后台 $(’#form’).serializeObject()

前提,还要自己编写一个方法,用于序列化表单传输:
//定义serializeObject方法,序列化表单
$.fn.serializeObject = function () {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function () {
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
}
           

前台:

JSON.stringify()的作用是将 JavaScript 对象转换为 JSON 字符串
var form = $('#form').serializeObject();

$.ajax({
	url: "",
	type: "post",
	dataType: "json",
	data: {
	    data : JSON.stringify(form)
	},
	success: function (result) {
	}
})
           

后台:

这是一篇讲解 ObjectMapper使用,jackson-databind,用于字符串和json、对象、集合互相转换使用的。
@ResponseBody
	@RequestMapping("/data")
	public Msg form(String data){
		ObjectMapper jackson = new ObjectMapper(); // 实例化ObjectMapper
		User user = jackson.readValue(formVal, User.class); // 将字符串转换成对象
		userDao.insert(user); // 添加一条信息
	}
           

3、第三种: JSON.stringify($("#form").serializeJSON()

– -- 引入 jquery.serializejson.min.js

前台:

这是一篇讲解 jquery.serializejson.min.js的妙用 转json的一个非常简单好用的插件。
$.ajax({
	url: "",
	type: "post",
	dataType: "json",
	data: {
	    data : JSON.stringify($("#form").serializeJSON()
	},
	success: function (result) {
	}
})
           

后台:

@ResponseBody
	@RequestMapping("/data")
	public Msg form(String data){
		ObjectMapper mapper = new ObjectMapper();
		@SuppressWarnings("unchecked")
		Map<String,String> map = mapper.readValue(data, Map.class);
		userDao.insert(user); // 添加一条信息
	}
           

4、第四种: $(’#form’).getJsonData()

– 引入 jquery.serializeExtend-1.0.1.js

前台:

$.ajax({
	url: "",
	type: "post",
	dataType: "json",
	data: {
	    data : $('#form').getJsonData()
	},
	success: function (result) {
	}
})
           

后台:

@ResponseBody
	@RequestMapping("/data")
	public Msg form(String data){
		ObjectMapper jackson = new ObjectMapper(); // 实例化ObjectMapper
		User user = jackson.readValue(formVal, User.class); // 将字符串转换成对象
		userDao.insert(user); // 添加一条信息
	}