一共有以下三种:
var obj1 = $('#queryForm').serialize();
var obj2 = $('#queryForm').serializeArray();
var obj3 = $('#queryForm').serializeObject();
var obj4 = JSON.stringify(obj3); //通过3转化为json字符串
分别对应的是:
obj1: 字符串拼接
obj2: 对象数组,都是name,vlaue
obj3: 对象
obj4: json字符串
应用场景:
1. 使用easyui中的datagrid表格控件展示数据的时候,在查询的页面中使用如下:
//toolbar按钮
function searchData(){
var obj = $('#queryForm').serializeObject();
$('#dg_sub').datagrid("reload",obj);
}
2. ajax向后台提交数据时:
如果一个表单的提交,可以直接使用第3种形式,即向后台提交一个object对象。例子如下:
$.ajax({
type: 'POST',
url: ctx + "/buyOrderDetail/buyOrderDetailSave",
async: false,
data: $('#buyOrderForm').serializeObject(),
success: function(data){
},
error:function(data){
}
});
如果有多个表单需要同时向后台提交,这样使用第3种就不行了,ajax就需要做以下调整更新:
var buyOrderStr = JSON.stringify($('#buyOrderForm').serializeObject());
$.ajax({
type: 'POST',
url: ctx + "/buyOrderDetail/buyOrderDetailSave",
async: false,
data: {buyOrderStr: buyOrderStr, entities: entities},
success: function(data){
},
error:function(data){
}
});
这时候就变成了json字符串,在java后台直接接收字符串形式,然后使用json转对象即可。
//保存采购单明细信息
@RequestMapping("/buyOrderDetailSave")
@ResponseBody
public String buyOrderDetailSave(Model model,String buyOrderStr, String entities) throws Exception { BuyOrder buyOrder = JSON.parseObject(buyOrderStr, BuyOrder.class); entities = entities.substring(2);
entities =" [" + entities + "]";
//前端提交的LIST
List<BuyOrderDetail> listDetail = JSON.parseArray(entities, BuyOrderDetail.class);
}