表单序列化serialize()和serializeArray()的区别以及后台接收
function add() {
var data = $("#systemForm").serialize();
$.ajax({
async: true,
cache: false,
type: 'POST',
url: 'DwyhxxController.do?update',
data: data,
success:function (data) {
data = JSON.parse(data);
if (false == data.success) {
W.$.dialog.alert(data.msg);
}else {
W.$.dialog.alert(data.msg);
}
},
error:function (data) {
W.$.dialog("修改失败");
}
});
}
这是serialize()序列化后的数据
"D_UUID=40288047&D_URL=FoperationEffectAnalysis&D_NO=1&SYS_NAME=JXBB"
可以看到是返回字符串并且用&连接,后台可以直接用RequestBody Bean bean 接收,或者单个参数接收,注意一定要是一一对应
var formArray =$("#systemForm").serializeArray();
var formObject = {};
$.each(formArray,function(i,item){
formObject[item.name] = item.value;
});
$.ajax({
async: true,
cache: false,
type: 'POST',
url: 'DwyhxxController.do?update',
contentType: "application/json",
data: JSON.stringify(formObject),
success:function (data) {
data = JSON.parse(data);
if (false == data.success) {
W.$.dialog.alert(data.msg);
}else {
W.$.dialog.alert(data.msg);
}
},
error:function (data) {
W.$.dialog("修改失败");
}
});
serializeArray()序列化后的数据
可以看到serializeArray()将数据转化成了对象的格式,要想传入后台还需要处理一下
var formObject = {};
$.each(formArray,function(i,item){
formObject[item.name] = item.value;
});
处理后的数据
就变成了很标准的键值对形式,然后使用JSON.stringfy()转换成json就可以传入后台了。后台可以直接使用对象@RequestBody Bean bean 接收,或者使用Map@RequestBody Map map接收
注意事项:serialize()序列化后的数据是字符串数据,提交是不要用json提交
serializeArray()需要将数据转成json后再提交到后台