将页面的对象(一个对象+一个list)封装成josn对象传入控制层

来源:互联网 发布:红猫网络加速器 编辑:程序博客网 时间:2024/05/13 05:30

   因为有需求需要做一个多条件的类似签到的推荐人功能,当后台设置了用户推荐满多少人时,赠送相应的积分或者优惠券,可以自己增加或者删除定义的条件,条件为:推荐满__人 赠送__积分 是否赠送优惠券 具体优惠券的下拉框 如下:

因为这里的条件可以自己增加或者删除 所以使用的list 而是否开启推荐人设置,推荐人说明这些则是固定的内容,所以这些内容在另外一个对象中,这里主要说明list

我是使用循环遍历的方式来完成的 具体代码如下

$("#send").click(function(){
daycounts=[];//人数
points=[];//积分
cids=[];//优惠券
isecoupons=[];//是否赠送优惠券
sumarr=[];//总集合,用来封装人数,积分优惠券这些条件的
var pointcountFormat=parseInt(points);
var value=$("#person input[type='text']").each(function(){//遍历人数
daycounts.push($(this).val());
});
var value=$("#point input[type='text']").each(function(){//遍历积分
points.push($(this).val());
});
var value=$("#isEcoupon select").each(function(){//遍历优惠券的id
isecoupons.push($(this).val());
});
var value=$("#context select").each(function(){//遍历下拉框选择项
cids.push($(this).val());
});
for(var i=0;i<daycounts.length;i++){//最后遍历条件的总长度,依次把第i个元素放入最大的数组中
var daycount=daycounts[i];
var point=points[i];
var cid=cids[i];
var isecoupon=isecoupons[i];
var nd={"daycount":daycount,"pointcount":point,"cid":cid,"isecoupon":isecoupon};
sumarr.push(nd);
}
//var statu=$("#yfje-singleselect").val();//这部分是另外一个对象的属性 所以下面的json是一个对象signm+一个List集合sdlist
var statu=$('input[name="state"]:checked').val();
var bzdemo = $('#bzdemo').val();
var id=$("#id").val();
var param = {"ssstatu" : statu,"bzdemo":bzdemo,"rtype":"2","id":id};
var data=ajaxJson("saveRefereeoption",{"signm":param,"sdlist":sumarr}, "POST");
if(data.statu){
$.alert({
title: '提示',
content: '保存设置成功',
confirm: function(){
}
}
);
}else{
$.alert({
title: '提示',
content: '保存失败!',
confirm: function(){
}
});
}
});
   用了几个数组来装数据 然后判断条件的个数先将每个条件都放在各自的数组里,然后遍历数组的长度,在依次每个数组中的第i个元素都装在一个总的数组里面,而后台的封装是使用@requestBody SignRModel 来接收的 具体接收的对象里面是一个对象+一个LIST 如下图:



因为当时在设计数据库结构的时候就是一个主表signm对象加从表signd,属于一对多的关系 需求是推荐满多少人,赠送多少积分,是否赠送优惠券等条件用户可以自己定义

的多个条件,所以前端jquery使用遍历这种方式,json的list也是使用的数组来封装的,因为以前都是封装单个对象,这次的需求条件比较灵活,而自己想了很久,就只想到了这种方法,如果大家有更好的方法也请大家能发表下看法 小弟不胜感激。

1 0